模糊使用下标xcode 7.1
我有这个代码:
var jsonResult = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary var count = jsonResult["levels"]!.count as Int for var i=0; i<count; ++i { let obj = jsonResult["levels"]![i] as! NSDictionary ... }
在最后一行,我收到这个错误:
下标使用不明确
我该如何解决这个问题?
这段代码已经工作了一段时间,但随着升级到Xcode 7.1它打破了,停止工作。
你必须告诉编译器中间对象在行中
let obj = jsonResult["levels"]![i] as! NSDictionary
声明jsonResult["levels"]!
编译器不知道他正在处理什么样的对象。 你必须告诉它是一个NSArray
或其他东西:
let obj = (jsonResult["levels"] as! NSArray)[i] as! NSDictionary
当然,你还应该确保你可以做所有的投射,并且json里面的对象真的是预期的types。
通过直接转换成NSDictionary
数组,只使用一次转换就可以缩短一点:
let obj = (jsonResult["levels"] as! [NSDictionary])[i]
理由保持不变:你告诉编译器什么types的jsonResult["levels"]
。 它应该是一个包含NSDictionary
的数组。
在新的Swift更新中。 你应该用objectForKey("yourKey")
方法而不是["yourKey"]
来获得你的价值。 在你的情况下,
let obj = jsonResult.objectForKey("levels")![i] as! NSDictionary