条件绑定的初始化程序必须具有可选类型,而不是 '[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”

收到此错误:条件绑定的初始化程序必须具有可选类型,而不是“布尔”

Swift - 条件绑定的初始化程序必须具有可选类型,而不是 'PHFetchResult<PHAsset>'