解析 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,success
和 error
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