模糊使用下标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