为什么
if error = response.result.error else {
print (error)
}
不允许并在下面的函数中抛出错误?我原以为它应该会很顺利。
Alamofire.request(Router.RegisterUser(parameters))
.validate()
.responseJSON(completionHandler: { (response) -> Void in
if let receivedData = response.result.value {
let json = JSON(receivedData)
// Check for error in JSON
if let message = json["error"]["message"].string {
let error = Error.errorWithCode(.DataSerializationFailed, failureReason: message)
print(error)
return
}
completionHandler(.Success(true), response: JSON(receivedData))
}
if error = response.result.error else {
print (error)
}
})
当服务器确实返回错误代码时,我使用validate函数来避免对completionhandler的成功响应。现在的问题是,我目前唯一可以收到的错误是由validate()
引发的错误。但我也在我的API中使用错误处理,并会向用户返回一个合适的错误消息。
错误Domain = com.alamofire.error Code = -6003"响应状态代码为 不可接受的:400" UserInfo = {NSLocalizedFailureReason =响应状态 代码是不可接受的:400}
我现在如何实现这一目标?通过使用验证,根据我的理解,响应永远不会被处理?
Alamofire.request(Router.RegisterUser(parameters))
.validate()
.responseJSON(completionHandler: { (response) -> Void in
switch(response.result) {
case .Success(let response):
print(response)
case .Failure(let error):
print("FAILURE: \(error)")
}
})
}
答案 0 :(得分:0)
您的代码中似乎存在两个问题:
您错过了let
或guard
来检查是否有错误。
print(error)
应该在里面,如果您正在检查错误不是nil
并尝试在其他地方打印错误,那将是零。