No está validando el código de estado de respuesta, por lo que es posible que un 404 le devuelva un caso .Success
. Todo lo que hace el serializador responseData
es validar que no hubo un error (que no lo habrá, ya que no está validando el código de estado de respuesta) o que los datos existen.
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)
}
}
En su caso, está recibiendo un 404 que no arroja un error y el servidor está devolviendo datos. Por lo tanto, su serializador responseData
tiene éxito. Si espera que un 404 arroje siempre un error, debe usar adicionalmente el método .validate(statusCode: [200])
antes del serializador responseData
. Más info en la Sección de Validación del README.
En el futuro, preguntas como esta son más adecuadas para Stack Overflow con una etiqueta alamofire
. Usamos GitHub para errores y solicitudes de funciones. 🍻
De nuestras Pautas de contribución
No usamos GitHub como foro de soporte. Para cualquier pregunta de uso que no sea específica del proyecto en sí, pregunte en Stack Overflow . Al hacerlo, será más probable que resuelva rápidamente su problema y permitirá que cualquier otra persona con la misma pregunta encuentre la respuesta. Esto también permite a los mantenedores concentrarse en mejorar el proyecto para otros.
Realmente lo aprecio
Estoy luchando con este problema... Muchas gracias.
Comentario más útil
No está validando el código de estado de respuesta, por lo que es posible que un 404 le devuelva un caso
.Success
. Todo lo que hace el serializadorresponseData
es validar que no hubo un error (que no lo habrá, ya que no está validando el código de estado de respuesta) o que los datos existen.En su caso, está recibiendo un 404 que no arroja un error y el servidor está devolviendo datos. Por lo tanto, su serializador
responseData
tiene éxito. Si espera que un 404 arroje siempre un error, debe usar adicionalmente el método.validate(statusCode: [200])
antes del serializadorresponseData
. Más info en la Sección de Validación del README.En el futuro, preguntas como esta son más adecuadas para Stack Overflow con una etiqueta
alamofire
. Usamos GitHub para errores y solicitudes de funciones. 🍻De nuestras Pautas de contribución
Haciendo preguntas
No usamos GitHub como foro de soporte. Para cualquier pregunta de uso que no sea específica del proyecto en sí, pregunte en Stack Overflow . Al hacerlo, será más probable que resuelva rápidamente su problema y permitirá que cualquier otra persona con la misma pregunta encuentre la respuesta. Esto también permite a los mantenedores concentrarse en mejorar el proyecto para otros.