Alamofire iOS13

问题描述 投票:0回答:1

我过去曾经使用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'类型”

swift alamofire
1个回答
0
投票

在第二个代码段中,您正在调用responseJSON(仅当您的响应是JSON而不是XML时才使用)。使用responseresponseData

您还应该检查successfailure并从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)
        ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.