【问题标题】:AFError Alamofire 5 when parsing JSON解析 JSON 时出现 AFError Alamofire 5
【发布时间】: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?

标签: swift cocoapods alamofire


【解决方案1】:

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

⌥-点击result。你会看到

然后点击Resultdocumentation

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?) 毫无意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多