2017-04-12 46 views
0

我希望我能夠正確地問這個問題: 我使用Alamofire和SwiftyJSON來管理從服務器獲得的JSON文件。 我在理解response.result.value類型時遇到了問題,如何將它轉換爲對象,我可以使用SwiftyJSON的JSON(data: data)構造函數構造它。 這是我的用於使用Alamofire請求代碼:使用Alamofire和SwiftyJSON解析從服務器返回的數據,返回的數據類型是什麼?

func performRequest() { 
    //  parameters["retry_count"] = retryNum 
    if let _ = host, let path = path { 

     let request = Alamofire.request(HOST + path, method: method, parameters: parameters, headers: headers) 
     request.responseJSON { response in 

      print("-----") 
      print(response.response?.statusCode) 
      print("-----") 

      // check if responseJSON already has an error 
      // e.g., no network connection 
      if let json = response.result.value { 

       print("--------") 
       print(json) 
       print("--------") 
      } 
      guard response.result.error == nil else { 
       print(response.result.error?.localizedDescription ?? "Response Error") 
       self.completionHandler?(response.result.isSuccess, nil) 
       self.retryRequest() 
       return 
      } 

       // make sure we got JSON and it's a dictionary 
      guard let json = response.result.value as? [String: AnyObject] else { 
       print("didn't get dictionary object as JSON from API") 
       self.completionHandler?(response.result.isSuccess, nil) 
       self.retryRequest() 
       return 
      } 

      // make sure status code is 200 
      guard response.response?.statusCode == 200 else { 
       // handle status code 

       self.completionHandler?(response.result.isSuccess, nil) 
       return 
      } 

      self.completionHandler?(response.result.isSuccess, json) 
      RequestsQueue.sharedInstance.sema.signal() 

     } 
    } 

這導致與此打印:

{ 
numOfShiftsInDay = 3; 
shifts =  (
      { 
     endTime = "14:00"; 
     startTime = "07:30"; 
    }, 
      { 
     endTime = "20:00"; 
     startTime = "13:30"; 
    }, 
      { 
     endTime = "02:00"; 
     startTime = "19:30"; 
    } 
); 

}

此數據類型是一個[String: AnyObject]

我想用它來構建一個SwiftyJSON JSON對象,因爲它是我更容易使用SwiftyJSON方法分析數據..

這是我嘗試解析它,然後將代碼中使用它,但它明顯不工作:

  let json = JSON(data: data) 

我得到這個編譯錯誤:

Cannot convert value of type '[String : AnyObject]?' to expected argument type 'Data' 

那麼應該怎麼去呢?

回答

1

您需要使用JSON(data)而不是JSON(data: data),因爲此init(data:)需要Data作爲參數。

變更線

let json = JSON(data: data) 

let json = JSON(data) 
+0

作品。這很簡單 – Eyzuky

相關問題