Vous ne validez pas le code d'état de la réponse, il est donc possible qu'un 404 vous renvoie un cas .Success
. Tout ce que fait le sérialiseur responseData
est de valider qu'il n'y a pas eu d'erreur (ce qui n'est pas le cas puisque vous ne validez pas le code d'état de la réponse) ou que les données existent.
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)
}
}
Dans votre cas, vous recevez un 404 qui ne génère pas d'erreur et le serveur renvoie des données. Par conséquent, votre sérialiseur responseData
réussit. Si vous vous attendez à ce qu'un 404 génère toujours une erreur, vous devez également utiliser la méthode .validate(statusCode: [200])
avant le sérialiseur responseData
. Plus d'informations dans la section Validation du README.
À l'avenir, des questions comme celle-ci seront mieux adaptées à Stack Overflow avec une balise alamofire
. Nous utilisons GitHub pour les bogues et les demandes de fonctionnalités. ??
De nos directives de contribution
Nous n'utilisons pas GitHub comme forum de support. Pour toute question d'utilisation qui n'est pas spécifique au projet lui-même, veuillez plutôt demander sur Stack Overflow . Ce faisant, vous aurez plus de chances de résoudre rapidement votre problème et vous permettrez à toute autre personne ayant la même question de trouver la réponse. Cela permet également aux mainteneurs de se concentrer sur l'amélioration du projet pour les autres.
J'apprécie beaucoup
Je suis aux prises avec ce problème... Merci beaucoup.
Commentaire le plus utile
Vous ne validez pas le code d'état de la réponse, il est donc possible qu'un 404 vous renvoie un cas
.Success
. Tout ce que fait le sérialiseurresponseData
est de valider qu'il n'y a pas eu d'erreur (ce qui n'est pas le cas puisque vous ne validez pas le code d'état de la réponse) ou que les données existent.Dans votre cas, vous recevez un 404 qui ne génère pas d'erreur et le serveur renvoie des données. Par conséquent, votre sérialiseur
responseData
réussit. Si vous vous attendez à ce qu'un 404 génère toujours une erreur, vous devez également utiliser la méthode.validate(statusCode: [200])
avant le sérialiseurresponseData
. Plus d'informations dans la section Validation du README.À l'avenir, des questions comme celle-ci seront mieux adaptées à Stack Overflow avec une balise
alamofire
. Nous utilisons GitHub pour les bogues et les demandes de fonctionnalités. ??De nos directives de contribution
Poser des questions
Nous n'utilisons pas GitHub comme forum de support. Pour toute question d'utilisation qui n'est pas spécifique au projet lui-même, veuillez plutôt demander sur Stack Overflow . Ce faisant, vous aurez plus de chances de résoudre rapidement votre problème et vous permettrez à toute autre personne ayant la même question de trouver la réponse. Cela permet également aux mainteneurs de se concentrer sur l'amélioration du projet pour les autres.