错误:部署更新目标8.3 NSMutableArray和addObjectsFromArray - swift

时间:2015-04-09 23:02:22

标签: ios swift nsmutablearray

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

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

错误:无法使用类型'(NSMutableArray!)'

的参数列表调用'addObjectsFromArray'

昨天在升级前工作

注意:tablelist是一个NSMutableArray

1 个答案:

答案 0 :(得分:4)

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)
}