我正在使用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
}
}
答案 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
,您都有一些辅助函数,因此您可以获得更多信息。只需查看文档。