Error: Deployment Update target 8.3 NSMutableArray and addObjectsFromArray - swift

Error: Deployment Update target 8.3 NSMutableArray and addObjectsFromArray - swift

更新 xcode 和我的设备后,某些功能不再 运行。 看到它:

var jsonUnico: NSMutableArray! = jsonResult["lista"] as? NSMutableArray
self.tableList.addObjectsFromArray(jsonUnico)

错误:无法使用类型为“(NSMutableArray!)”的参数列表调用 'addObjectsFromArray'

昨天升级前还可以用

注意:表列表是一个 NSMutableArray

Swift 1.2 不再在 NSArray 和 Swift 的本机数组类型之间隐式转换——您需要显式地从一个转换为另一个。由于 addObjectsFromArray 采用 Swift 数组,这意味着您需要将其转换为 [AnyObject].

通常您会收到更有帮助的错误消息:error: 'NSMutableArray' is not implicitly convertible to '[AnyObject]'; did you mean to use 'as' to explicitly convert?,并提供“修复它”的建议。但看起来这并没有发生,因为您使用了隐式展开的可选 NSMutableArray!.

但是……这并不是一件坏事,因为在从字典中获取值时使用隐式展开的可选值是危险的(如果条目不存在,您的应用程序将崩溃)。另一种选择是:

if let jsonUnico = jsonResult["lista"] as? NSMutableArray {
    let tableList = NSMutableArray()
    // Xcode will recommend adding the "as [AnyObject]"
    tableList.addObjectsFromArray(jsonUnico as [AnyObject])        
}

但是既然你已经在上面做了一个as,你不妨把它们结合起来:

if let jsonUnico = jsonResult["lista"] as? [AnyObject] {
    tableList.addObjectsFromArray(jsonUnico)
}