更新xcode和我的设备后,某些功能不再运行。 看到它:
var jsonUnico: NSMutableArray! = jsonResult["lista"] as? NSMutableArray
self.tableList.addObjectsFromArray(jsonUnico)
错误:无法使用类型'(NSMutableArray!)'
的参数列表调用'addObjectsFromArray'昨天在升级前工作
注意:tablelist是一个NSMutableArray
答案 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)
}