Sie validieren den Antwortstatuscode nicht, daher ist es möglich, dass ein 404-Fehler Ihnen einen .Success
-Fall zurückgibt. Alles, was der responseData
Serializer tut, ist zu validieren, dass kein Fehler aufgetreten ist (was nicht passieren wird, da Sie den Antwortstatuscode nicht validieren) oder dass die Daten vorhanden sind.
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)
}
}
In Ihrem Fall erhalten Sie einen 404, der keinen Fehler auslöst, und der Server gibt Daten zurück. Daher ist Ihr responseData
Serializer erfolgreich. Wenn Sie erwarten, dass ein 404-Fehler immer einen Fehler auslöst, sollten Sie zusätzlich die Methode .validate(statusCode: [200])
vor dem Serializer responseData
verwenden. Weitere Informationen finden Sie im Validierungsabschnitt der README.
Zukünftig eignen sich solche Fragen besser für Stack Overflow mit einem alamofire
-Tag. Wir verwenden GitHub für Fehler und Funktionsanfragen. 🍻.
Aus unseren Beitragsrichtlinien
Wir verwenden GitHub nicht als Support-Forum. Fragen zur Verwendung, die nicht spezifisch für das Projekt selbst sind, stellen Sie bitte stattdessen auf Stack Overflow . Auf diese Weise ist es wahrscheinlicher, dass Sie Ihr Problem schnell lösen, und Sie ermöglichen es allen anderen, die die gleiche Frage haben, die Antwort zu finden. Dadurch können sich Betreuer auch darauf konzentrieren, das Projekt für andere zu verbessern.
Ich schätze wirklich
Ich kämpfe mit diesem Problem ... Vielen Dank.
Hilfreichster Kommentar
Sie validieren den Antwortstatuscode nicht, daher ist es möglich, dass ein 404-Fehler Ihnen einen
.Success
-Fall zurückgibt. Alles, was derresponseData
Serializer tut, ist zu validieren, dass kein Fehler aufgetreten ist (was nicht passieren wird, da Sie den Antwortstatuscode nicht validieren) oder dass die Daten vorhanden sind.In Ihrem Fall erhalten Sie einen 404, der keinen Fehler auslöst, und der Server gibt Daten zurück. Daher ist Ihr
responseData
Serializer erfolgreich. Wenn Sie erwarten, dass ein 404-Fehler immer einen Fehler auslöst, sollten Sie zusätzlich die Methode.validate(statusCode: [200])
vor dem SerializerresponseData
verwenden. Weitere Informationen finden Sie im Validierungsabschnitt der README.Zukünftig eignen sich solche Fragen besser für Stack Overflow mit einem
alamofire
-Tag. Wir verwenden GitHub für Fehler und Funktionsanfragen. 🍻.Aus unseren Beitragsrichtlinien
Fragen stellen
Wir verwenden GitHub nicht als Support-Forum. Fragen zur Verwendung, die nicht spezifisch für das Projekt selbst sind, stellen Sie bitte stattdessen auf Stack Overflow . Auf diese Weise ist es wahrscheinlicher, dass Sie Ihr Problem schnell lösen, und Sie ermöglichen es allen anderen, die die gleiche Frage haben, die Antwort zu finden. Dadurch können sich Betreuer auch darauf konzentrieren, das Projekt für andere zu verbessern.