比较 alamofire 返回的错误对象

Posted

技术标签:

【中文标题】比较 alamofire 返回的错误对象【英文标题】:compare error object return by alamofire 【发布时间】:2017-12-13 22:18:02 【问题描述】:

我将 Alamofire 与 EVReflection 一起使用,如果 responseObject 无法将原始响应字符串解析为对象,response.error 将具有一些值,如果出现不同的错误,将设置不同的值。

不确定如何比较这些错误值,以处理不同的错误。

如果 JSON 解析出错,会输出 print(error)

FAILURE: Error Domain=com.alamofirejsontoobjects.error Code=1 "Data could not be serialized. Input data was not json." UserInfo=NSLocalizedFailureReason=Data could not be serialized. Input data was not json.

Alamofire.request(...)           
            .responseObject  (response: DataResponse<UserData>) in
                guard response.error == nil else 
                    print(response.error)
                    return
                
             

【问题讨论】:

【参考方案1】:

当您的请求失败时,您将收到来自 Alamofire 的 AFError 类型的错误。您实际上可以检查AFError.swift 文件以熟悉可能的值。这个文件对每个案例都有很好的文档。

由于 AFError 是一个错误,它是枚举类型,你可以检查如下:

switch err 
case .parameterEncodingFailed(let reason):
    // do something with this.
    // If you want to know more - check for reason's cases like
    // switch reason 
    // case .jsonEncodingFailed(let error):
    //     … // handle somehow
    // case .propertyListEncodingFailed(let error):
    //     … // handle somehow
    //      
case .responseValidationFailed(let reason):
    // do something else with this
…

对于每个reason,您都有一些辅助函数,因此您可以获得更多信息。只需检查文档。

【讨论】:

以上是关于比较 alamofire 返回的错误对象的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 和 api 密钥有问题

如何在 Swift 项目中添加 Alamofire

SwiftyDropbox 与 Alamofire 问题

iOS/IBM Cloud/Swift:使用 AlamoFire 发布到 Watson API

模块“Alamofire”没有名为“upload”的成员

Alamofire 2 不允许 SSL 连接 Instagram API