我有以下代码:
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或其他:
jsonResult["levels"]!
NSArray
let obj = (jsonResult["levels"] as! NSArray)[i] as! NSDictionary
当然,您还应该确保可以进行所有强制转换,并且json内的对象确实属于预期类型。
通过直接转换为以下数组,仅使用一个转换就可以缩短一点时间NSDictionary:
NSDictionary
let obj = (jsonResult["levels"] as! [NSDictionary])[i]
推理保持不变:您告诉编译器什么类型jsonResult["levels"]。应该是包含NSDictionarys 的数组。
jsonResult["levels"]