2017-04-12 119 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