草庐IT

any_option

全部标签

swift - Swift 可选类型中 "an Optional of an Optional"的用途是什么?

我在SwiftTestssourcecode中发现了一个有趣的函数:functest(_v:A????,_cast:(A????)->B?)自Type?只是Optional的语法糖,这意味着参数的类型v可以重写为Optional>>>.我知道这个函数是用来测试可选类型的,所以它的参数肯定是过火了v和cast,但是具有“可选的可选等”的实际用途是什么?输入Swift(如果有)? 最佳答案 当您访问数据时,这些有时会在Swift中发生。一个示例是,如果您有一个字典,其中的值具有可选类型,然后您在该字典中查找一个值:letrockStar

swift - 如何检查字段类型是否为 Any?是零或 NSNull

我实际上是在尝试在Xcode8.1上使用Swift3解析Json对象。这是我的代码:ifletobjData=objJson["DATA"]as!NSDictionary?{varmsg:String=""iflettmp=objData.object(forKey:"Message"){msg=tmpas!String}else{print("NIIILLLLL")}}我收到此错误消息:Couldnotcastvalueoftype'NSNull'(0x4587b68)to'NSString'(0x366d5f4)atthislinemsg=tmpas!字符串.我不明白为什么会出现此

swift - NSCopying 副本(带有 :) - Does it really need to return Any?

有没有什么方法可以使用NSCopying而返回的对象不是Any类型?它总是迫使我施法。这似乎很奇怪。我正在复制对象,Swift难道不应该根据copy这个词的定义知道它是同一类型吗?是否有另一种方法来复制我不知道的对象,或者是否有一些我缺少的“陷阱”需要这个。这个类很简单,比如:classPerson{varname:Stringvarage:Int}它必须是一个类,因为我需要继承。例子:varjohn=Person(name:"John",age:30)varjohnsClone=john.copy()as!Person我想我可以创建一个接受现有对象的初始化程序,但这在语义上似乎不如“

swift - Xcode 8 测试版 6 : AnyObject replaced by Any: where is classForCoder?

Xcode8beta6已将AnyObject替换为Any。在某些情况下,出于调试原因,我使用a.classForCoder来查看其中的内容。使用AnyObject这行得通。使用Any这不再有效。现在我必须使用Any:查看Any类型变量中的类型的首选方法是什么?转换为AnyObject似乎不是很有用,因为在许多情况下这是一个String而String不会确认AnyObject自Xcode8beta6以来不再存在。 最佳答案 使用类型(of:)您可以使用type(of:)找出Any类型的变量中的变量类型。leta:Any="hello"

swift - 期望解码 Array<Any> 但找到了字典

我正在从返回数组的API中获取数据,但需要用具有“子级别”的API替换它:RAW:ETH:USD:TYPE:"5"MARKET:"CCCAGG"FROMSYMBOL:"ETH"TOSYMBOL:"USD"PRICE:680.89CHANGEPCT24HOUR:-9.313816893529749这是我的结构:structEthereum:Codable{letpercentChange24h:StringletpriceUSD:StringprivateenumCodingKeys:String,CodingKey{casepriceUSD="PRICE",percentChange2

arrays - 如何检查 `Any` 类型的对象是一个实现某些协议(protocol)的具体类的数组

我遇到了一个问题。假设我有一个协议(protocol)和两个实现它的类:protocolInitiatable{init()}classA:Initiatable{requiredinit(){}}classB:Initiatable{requiredinit(){}}然后在某个时候我正在创建一个数组并将其传递给函数:vararray=[A]()funcupdate(object:Any){}update(object:array)从那个函数update我想将object传递给另一个函数,如果它满足另一个函数的条件:funcprocess(array:T){/*...*/}那么我如何检

ios - 更新到 XCode 6.3 (Swift 1.2) 后出现 "Objective-C method conflicts with optional requirement method"错误

我在我的应用程序中使用GoogleMapsiOSSDK,直到今天一切都运行良好。我已经下载了Xcode6.3并遇到了一些错误。整理了所有这些,除了我的MapViewController类中的两个错误,在这两个方法上弹出:第一种方法:funcmapView(mapView:GMSMapView!,didTapMarkermarker:ExtendedMarker!)->Bool{...somecode...}错误:Objective-Cmethod'mapView:didTapMarker:'providedbymethod'mapView(:didTapMarker:)'conflic

swift - 检查 `Any` 值是否为对象

我惊讶地发现这个条件总是成立的:letfoo:Any=4ifletobject=fooas?AnyObject{print("It'sanobject.")//dosomethingwith`object`thatrequiresreferencesemantics}else{print("It'snotanobject.")}看来无论foo原本是什么类型,都被转换成了对应类的实例。有没有一种可靠的方法来确定foo是否是一个对象? 最佳答案 更新我在下面显示的代码被报告为在发布版本中不起作用。(请参阅下面PaulCantrell的评

swift - <T : Any> and no constraint <T> 的通用约束有什么区别

我见过一些使用约束的代码,例如并且无法在文档中找到它与未指定约束之间的区别。有什么区别吗,比如限制为非可选值? 最佳答案 约束确实是多余的,因为所有类型都是Any的子类型(包括Optional)。在内部,编译器实际上对类型Any进行建模作为协议(protocol)组合类型(例如P1&P2)由零协议(protocol)组成。没有办法用语言拼写这个,这就是为什么Any不再在标准库中定义1,它只是一个被解析为类型的关键字。所以约束T:Any从字面上解释为“T必须符合此空协议(protocol)列表中的所有协议(protocol)”,这显然

ios - 在 Swift 中对元组进行模式匹配时如何解包 Optional?

在Swift中,有一个常见的iflet模式用于解包可选值:ifletvalue=optional{print("valueisnowunwrapped:\(value)")}我目前正在做这种模式匹配,但是在switchcase中使用元组,其中两个参数都是可选的://urlisoptionalhereswitch(year,url){case(1990...2015,letunwrappedUrl):print("Currentyearis\(year),goto:\(unwrappedUrl)")}然而,这打印:"Currentyearis2000,gotoOptional(www.g