2017-04-16 72 views
0

我剛剛更新到swift 3.1和Xcode 8.3.1,我掙扎着一個錯誤,它在更新之前不是一個錯誤。 ,我不知道如何解決該錯誤是試圖在該行try! JSONSerialization.jsonObject無法用以下類型的參數列表調用jsonObject:(Any),options:[Any]

我在下面說明

public extension User { 

    public static var fake: Resource<[User]> = Resource(request: { (url) -> URLRequest in 
     var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! 
     components.path = "/v2/fake-users" 
     var request = URLRequest(url: components.url!) 
     request.httpMethod = "GET" 
     return request 
    }) { (data) -> ([User]) in 

     let json = try! JSONSerialization.jsonObject(with: data, options:[]) >>>>ERRROR>>>> Cannot invoke 'jsonObject' with an argument list of type '(with: (Any), options: [Any])' 

     var code = json as? [String: Any] 
     let error = code?["code"] as! String? 
      if error == "NOT_AUTHORIZED_EXPIRED_TOKEN" || error == "INTERNAL_ERROR"{ 
       let sessionController = SessionController() 
       sessionController.refreshToken(refreshToken: (SessionProvider().getUserToken()?.refreshToken)!) { (error) in 
        if let error = error { 
         print("Error trying to login refreshToken: \(error)") 
        } else { 
         print("login refreshToken successful") 
        } 
       } 
      } 
      else { 
       print("\n code: \(error)\n") 

      } 
     let unboxer = try Unboxer(data: data as! Data) 
     return try unboxer.unbox(key: "hits") 
    } 
+0

>([用戶])看來在閉包中的'data'參數返回'Any',所以你必須將其轉換爲'Data'或者將閉包聲明爲更具體的類型。順便說一句,你可以省略'options'參數,默認值是* no options *。 – vadian

回答

0

的代碼,你可以試試這個從API解析JSON數據:

}){(strData是) - 在

let data = strData.data(using: String.Encoding.utf8, allowLossyConversion: false)! 
       let json = try JSONSerialization.jsonObject(with: data, options: []) 
       print(json) 
相關問題