我过去曾经使用swift 2或3来更新代码。我被困在想使用Alamofire的地方,但是使用它的方式发生了变化,我不知道该如何使用它了。有人可以更新代码的这一部分并进行一些解释吗?谢谢。这是原始代码。
Alamofire.request(.POST, url)
.response{ (request, response, data, error) in
let xml = SWXMLHash.parse(data!)
let sunsetTime = xml["result"]["rise_and_set"]["sunset_hm"].element?.text
self.sunsetTimeLabel.text = sunsetTime
self.getDateFromString(sunsetTime,year: comp.year,month: comp.month,day: comp.day)
if (error != nil) {
print(error)
}
}
这是我正在编写的代码。
AF.request(url, method: .post).responseJSON { (responseData) in
let xml = SWXMLHash.parse(responseData as Data)
let sunsetTime = xml["result"]["rise_and_set"]["sunset_hm"].element?.text
self.sunsetTimeLabel.text = sunsetTime
出现错误,提示“无法强制转换'AFDataResponse'类型的值(aka'DataResponse')到'Data'类型”
在第二个代码段中,您正在调用responseJSON
(仅当您的响应是JSON而不是XML时才使用)。使用response
或responseData
。
您还应该检查success
或failure
并从Data
对象中提取response
:
AF.request(url, method: .post).response { response in
switch response.result {
case .failure(let error):
print(error)
case .success(let data):
let xml = SWXMLHash.parse(data)
...
}
}