首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alamofire iOS13

Alamofire iOS13
EN

Stack Overflow用户
提问于 2020-03-08 09:44:57
回答 1查看 265关注 0票数 0

当我使用swift 2或3时,我想更新我的代码。我被困在我想使用Alamofire的地方,但使用它的方式发生了变化,我不知道如何使用它了。有人可以更新这部分代码并解释一下吗?谢谢。这是原始代码。

代码语言:javascript
复制
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)
                }
        }

这是我写的代码。

代码语言:javascript
复制
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‘类型(也称为'DataResponse')的值转换为'Data’类型”

EN

回答 1

Stack Overflow用户

发布于 2020-03-08 10:02:59

您的第一个代码片段是Alamofire 3语法。我从第二个代码片段中推断出您现在使用的是Alamofire 5。

有几个问题:

  1. 您正在调用responseJSON (只有当您的响应是JSON而不是XML时才会使用它)。使用response,或者更好地说,传递给这个闭包的responseData.
  2. The response对象本身不是一个Data。对于responseData方法,它是一个AFDataResponse对象,它有一个data属性(这是一个Data?)。您必须从此AFDataResponse中提取Data对象,方法是展开data属性的内容,或者从result中提取(请参见下一点)。
  3. 您可能应该检查successfailure,然后从<代码>D22对象中提取Data。<代码>H223<代码>G224

所以,把这些放在一起,你会得到类似这样的结果:

代码语言:javascript
复制
AF.request(url, method: .post).responseData { response in
    switch response.result {
    case .failure(let error):
        print(error)

    case .success(let data):
        let xml = SWXMLHash.parse(data)
        ...
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60583815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档