【发布时间】:2017-04-12 07:24:58
【问题描述】:
我希望我能正确地问这个问题:
我正在使用 Alamofire 和 SwiftyJSON 来管理从服务器获取的 JSON 文件。
我在理解 response.result.value 的类型方面遇到问题,如何将其转换为我可以使用 SwiftyJSON 的 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'
那我该怎么办呢?
【问题讨论】:
标签: swift3 alamofire swifty-json