下标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中的对象确实是预期的类型。


通过直接投射到NSDictionary:的阵列,只使用一次投射,甚至更短一点

let obj = (jsonResult["levels"] as! [NSDictionary])[i]

推理保持不变:告诉编译器什么类型的jsonResult["levels"]。它应该是一个包含NSDictionary s的数组。

在新的Swift更新中。您应该使用objectForKey("yourKey")方法而不是["yourKey"]来获取您的值。在您的情况下,

let obj = jsonResult.objectForKey("levels")![i] as! NSDictionary

最新更新