解析 JSON 时出现 AFError Alamofire 5

Posted

技术标签:

【中文标题】解析 JSON 时出现 AFError Alamofire 5【英文标题】:AFError Alamofire 5 when parsing JSON 【发布时间】:2021-05-07 01:32:17 【问题描述】:

我最近刚刚开始处理一个安装了 AlamoFire 4.3 的旧 ios 项目。出于安全原因,我升级到 5。我对 Alamofire 5 中的变化不是特别熟悉。从 JSON 解析值时,在这种特殊情况下是响应消息,我收到错误 Value of type 'Result<Any, AFError>' has no member 'value'

请求如下:

AF.request(URL_USER_REGISTER, method: .post, parameters: parameters).responseJSON
    
        response in
        //printing response
        print(response)
        
        // Result code goes here...
        
    

这是我遇到错误的代码(结果代码在此处...):

if let result = response.result.value 
    let jsonData = result as! NSDictionary
    self.labelMessage.text = jsonData.value(forKey: "message") as! String?

关键或“消息”是响应代码。这在 Alamofire 4.3 中运行良好,没有任何错误。关于在第 5 版中进行这项工作所需的任何建议? I've looked around 我确定我需要提取 result。虽然不太确定我会怎么做...

【问题讨论】:

你有没有想过学习如何解开可选值? 我没有。但有兴趣学习。 除了@ElTomato 建议,您可以使用Error? 转换或更改AFError? 【参考方案1】:

最接近的方法是检查类型,而不是环顾

⌥-点击result。你会看到

然后点击Result去documentation。

Result 类型有两个关联类型的 case,successerror case。所以switch result 来处理这两种情况

switch response.result 
    case .success(let result): print(result)
    case .failure(let error): print(error)

在文档站点上,还有更多链接指向如何使用 Result 的示例。

另一个有价值的来源是Usage.md,详细说明如何使用Alamofire。

注意事项:

不要在 Swift 中使用 NSDictionary。 不要使用value(forKey,除非你指的是 KVC(你不知道)。 强制将可选项展开为可选项 (as! String?) 毫无意义。

【讨论】:

以上是关于解析 JSON 时出现 AFError Alamofire 5的主要内容,如果未能解决你的问题,请参考以下文章

解析“......没有方法'replace'”时出现JSON错误

解析我的 json 时出现问题,我得到这个“JSONDecodeError: Invalid \escape”

解析 JSON 对象时出现 NoClassDefFoundError JsonAutoDetect

尝试在 python 中解析时出现 JSON 键错误

在 Python 中解析 JSON 结果时出现 KeyError

使用 Alamofire 解析 json 时出现 AppDelegate 错误