您没有验证响应状态代码,因此 404 可能会返回.Success
案例。 responseData
序列化程序所做的只是验证没有错误(因为您没有验证响应状态代码,所以不会出现错误)或数据存在。
public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
return ResponseSerializer { _, _, data, error in
guard error == nil else { return .Failure(error!) }
guard let validData = data where validData.length > 0 else {
let failureReason = "Data could not be serialized. Input data was nil or zero length."
let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
return .Failure(error)
}
return .Success(validData)
}
}
在您的情况下,您收到的 404 没有引发错误,并且服务器正在返回数据。 因此,您的responseData
序列化程序成功。 如果您希望 404 总是抛出错误,您应该在responseData
序列化程序之前另外使用.validate(statusCode: [200])
方法。 README 的验证部分中的更多信息。
将来,此类问题更适合带有alamofire
标签的 Stack Overflow。 我们使用 GitHub 来处理错误和功能请求。 🍻
来自我们的贡献指南
我们不使用 GitHub 作为支持论坛。 对于任何不特定于项目本身的使用问题,请改为在Stack Overflow上提问。 通过这样做,您将更有可能快速解决您的问题,并且您将允许其他有相同问题的人找到答案。 这也使维护人员可以专注于为他人改进项目。
我真的很感激
我正在努力解决这个问题......非常感谢你。
最有用的评论
您没有验证响应状态代码,因此 404 可能会返回
.Success
案例。responseData
序列化程序所做的只是验证没有错误(因为您没有验证响应状态代码,所以不会出现错误)或数据存在。在您的情况下,您收到的 404 没有引发错误,并且服务器正在返回数据。 因此,您的
responseData
序列化程序成功。 如果您希望 404 总是抛出错误,您应该在responseData
序列化程序之前另外使用.validate(statusCode: [200])
方法。 README 的验证部分中的更多信息。将来,此类问题更适合带有
alamofire
标签的 Stack Overflow。 我们使用 GitHub 来处理错误和功能请求。 🍻来自我们的贡献指南
问问题
我们不使用 GitHub 作为支持论坛。 对于任何不特定于项目本身的使用问题,请改为在Stack Overflow上提问。 通过这样做,您将更有可能快速解决您的问题,并且您将允许其他有相同问题的人找到答案。 这也使维护人员可以专注于为他人改进项目。