我希望我能够正确地问这个问题:
我使用Alamofire和SwiftyJSON来管理从服务器获得的JSON文件。
我在理解response.result.value
的类型方面存在问题,如何将其转换为可以使用SwiftyJSON' s JSON(data: data)
构造函数构造它的对象。
这是我使用Alamofire的请求代码:
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'
那我该怎么办呢?
答案 0 :(得分:1)
您需要使用JSON(data)
而不是JSON(data: data)
,因为此init(data:)
需要Data
作为参数。
更改了行
let json = JSON(data: data)
要强>
let json = JSON(data)