Alamofire中成员下标的模糊参考

时间:2016-09-16 12:33:28

标签: alamofire swift3

Alamofire.request(videosUrl!).responseJSON { response in
        if response.result.value != nil {

            let json = response.data

            do {

                let readableJSON = try JSONSerialization.jsonObject(with: json!, options: .mutableContainers) as? JSONStandard

                if let items = readableJSON {

                    for i in 0..<items.count {

                        let item = items[i] <<< ERROR HERE

                        ...REST OF CODE HERE
                    }
                }    

             } catch {
                 print(error)
             }
         }
     }

我也有一个类型设置:

typealias JSONStandard = [String:AnyObject]

我的问题是为什么我得到了对成员下标&#39;模糊的引用?错误?我所要做的就是访问数组的正确部分。

1 个答案:

答案 0 :(得分:0)

发生错误,因为Dictionary(您的JSONStandard)的下标方法要求:

1)String作为关键参数,但您传递的i类型为Int。根据示例,您的代码基于您可能应该替换

if let items = readableJSON {
...
}

if let tracks = readableJSON["tracks"] as? JSONStandard {
      if let items = tracks["items"] as? [JSONStandard] {
          ...
      }
}

在这种情况下,items成为Array,在下标方法中使用Int索引。

2)或因为Dictionary也是索引类型为DictionaryIndex<Key, Value>的集合,下标也可以DictionaryIndex<String, AnyObject>。在您的情况下,您可以替换

for i in 0..<items.count {

for i in items.indices {

甚至

for (_, item) in items {

您选择的解决方案取决于 JSON

的结构