条件绑定的初始化程序必须具有可选类型,而不是 '[NSObject: AnyObject]' SwiftyJSON [重复]
Posted
技术标签:
【中文标题】条件绑定的初始化程序必须具有可选类型,而不是 \'[NSObject: AnyObject]\' SwiftyJSON [重复]【英文标题】:Initialiser for conditional binding must have Optional type, not '[NSObject: AnyObject]' SwiftyJSON [duplicate]条件绑定的初始化程序必须具有可选类型,而不是 '[NSObject: AnyObject]' SwiftyJSON [重复] 【发布时间】:2016-07-09 13:00:21 【问题描述】:我想跳过去使用 Xcode 7.3.1 并转换我的代码,但我在这里遇到了一些问题,这就是我过去在 Swift 1.1 中使用它的方式,但我收到错误 - 条件初始化器binding 必须具有 Optional 类型,而不是 '[NSObject: AnyObject]' SwiftyJSON:
if let userInfo = error.userInfo <-- Error in this line //Initialiser for conditional binding must have Optional type, not '[NSObject: AnyObject]'
if let breadcrumb = userInfo["JSONErrorBreadCrumbKey"] as? NSString
let newBreadCrumb = (breadcrumb as String) + "/\(index)"
let newUserInfo = [NSLocalizedDescriptionKey: "JSON Keypath Error: Incorrect Keypath \"\(newBreadCrumb)\"",
"JSONErrorBreadCrumbKey": newBreadCrumb]
return JSONValue.JInvalid(NSError(domain: "JSONErrorDomain", code: 1002, userInfo: newUserInfo))
提前致谢!
【问题讨论】:
error.userInfo
是非可选的。删除 if
和大括号
感谢成功!!
【参考方案1】:
条件绑定(如果让)需要一个结果可以为 nil 的表达式。该错误意味着 error.userInfo never nil。
您只需删除第一行中的 if,如下所示:
let userInfo = error.userInfo
您的代码的其余部分应该没问题。您还需要删除结束括号 if 为好。
【讨论】:
以上是关于条件绑定的初始化程序必须具有可选类型,而不是 '[NSObject: AnyObject]' SwiftyJSON [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何修复条件绑定的初始化程序必须具有可选类型,而不是“字符串”? [复制]
条件绑定的初始化程序必须具有可选类型,而不是“UIView”
条件绑定的初始化程序必须具有可选类型,而不是“AVAudioInputNode”
条件绑定的初始化程序必须具有可选类型,而不是“UIView”