比较错误对象返回alamofire

时间:2017-12-13 22:18:03

标签: ios swift alamofire

我正在使用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 个答案:

答案 0 :(得分: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,您都有一些辅助函数,因此您可以获得更多信息。只需查看文档。