2016-09-16 103 views
1
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集:曖昧參考成員在標Alamofire

typealias JSONStandard = [String:AnyObject] 

我的問題是,爲什麼我收到了「曖昧參考成員標」的錯誤?我想要做的就是訪問數組的正確部分。

+0

我下面從[這裏](https://www.youtube.com/watch?v=FjsxG07haJI)到l etter是否適合我的需求,對他有用?幾乎完整的代碼見21:27。 –

回答

0

該錯誤發生時,由於Dictionary標方法(它是你JSONStandard)要求:

1)String作爲關鍵參數,但通過i具有Int類型。並根據您的代碼是基於你的例子大概應該

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

更換

if let items = readableJSON { 
... 
} 

在這種情況下items成爲它使用標方法Int指數的Array

2)或因爲Dictionary也是索引類型爲DictionaryIndex<Key, Value>下標的集合也可以預期爲DictionaryIndex<String, AnyObject>。你的情況,你可以更換

for i in 0..<items.count { 

for i in items.indices { 

甚至與

for (_, item) in items { 

你選擇的解決方案取決於您JSON的結構