class func fromDict(d: [String : AnyObject]!) -> Todo? { let Title = d["Title"]? as? String // etc...}
它给了我错误:postfix的 *** 作数?应该有可选的类型; type是(String,AnyObject)
但是,如果我这样做,它的工作原理:
class func fromDict(d: [String : AnyObject]!) -> Todo? { let maybeTitle = d["Title"]? let Title = maybeTitle as? String // etc...}
它似乎是基本的替代,但我可能会遗漏一些语言的细微差别.谁能对此有所了解?
解决方法 推荐的模式是if let maybeTitle = d["Title"] as? String { // do something with maybeTitle}else { // abort object creation}
这可能是一个细微差别的问题.表格数组[下标]?是不明确的,因为它可能意味着整个字典(< String:AnyObject>)是可选的,而你可能意味着结果(字符串).在上面的模式中,您利用了Dictionary设计为假设以可选类型访问某些键结果的事实.
经过实验,并注意到了?之后就像暧昧一样,更多,这是我的解决方案:
var dictionary = ["one":"1","two":"2"]// or var dictionary = ["one":1,"two":2]var message = ""if let three = dictionary["three"] as Any? { message = "\(three)"}else { message = "No three available."}message // "No three available."
这适用于所有非对象Swift对象,包括Swift字符串,数字等.感谢Viktor提醒我String不是Swift中的对象.
如果您知道值的类型,您可以替换任何?使用适当的可选类型,如String?
总结以上是内存溢出为你收集整理的ios – Swift可选项:语言问题,还是做错了什么?全部内容,希望文章能够帮你解决ios – Swift可选项:语言问题,还是做错了什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)