为什么通过索引访问此json子元素会引发此错误?

时间:2016-07-04 16:50:13

标签: arrays swift dictionary

这是json的一部分

        "feature_id" = (
            3047,
            3084,
            3095,
            3100,
            3121,
            3124,
            3182,
            3272,
            3273,
            3274
        );

这是我访问json的方式,我使用的是Alamofire。

var features_id = self.jsonD["results"]!["place_basic_info"]!!["feature_id"]!!

现在问题就在这里

features_id[0] as? String

引发的错误是:

  

模糊地使用'下标'

奇怪的是,当我尝试为设备构建时,这会出现,但是在运行时却没有,如何解决这个问题?为什么会出现?

1 个答案:

答案 0 :(得分:1)

  

模糊地使用'下标'

问题是编译器不知道features_id是一个数组,因此无法通过索引对其进行下标。

您必须将对象的类型提供给编译器,例如使用可选的绑定和强制转换:

if let featID = features_id as? [Int] {
    // here featID is features_id unwrapped as an array of Ints
}