2017-08-30 93 views
-2

我發現很難將我的結果傳遞給我的完成回調以訪問我的ViewController。我可以打印我的對象,當我做我的循環,但我不能訪問對象內的特定值。類型任何沒有下標成員

public func getMedia(completion: @escaping (Array<Any>) ->()){ 
    Alamofire.request(URL(string: MEDIA_URL)!, 
     method: .get) 
     .responseJSON(completionHandler: {(response) -> Void in 
      if let value = response.result.value{ 
       let json = JSON(value).arrayValue 
       completion(json) 
      } 
     } 
    ) 
} 

在我的ViewController

getMedia(){success in 
     for item in success{ 
      print(item["image"]) //This causes error 
      print(item) //This prints the object perfectly 
     } 
    } 

回答

0

的問題到底是什麼錯誤消息告訴你:對標中的變量,它需要被宣佈爲支持下標一類,但你宣佈你的數組包含Any。而Any是最基本的類型,不支持下標。

假設你的數組包含詞典,聲明你getMedia功能像這個:

public func getMedia(completion: @escaping ([[String : Any]]) ->())

或者,如果有一個機會,字典可能包含非字符串鍵:

public func getMedia(completion: @escaping ([[AnyHashable : Any]]) ->())

如果字典中的值都具有相同的類型,請根據需要將該類型替換爲Any

相關問題