Obtención de datos de respuesta del error Alamofire

He estado usando Alamofire en uno de mis proyectos de iOS, pero recientemente al actualizar a Alamofire 3.0 el formatting cambió ligeramente para get resultados. En mi caso, quiero llamar a una API de inicio de session y hacer que devuelva el resultado. Hay un par de errores que podrían suceder, así que siempre devuelvo en el resultado de la API cuál es el problema, por lo que quisiera que mi código ingrese en un bloque de falla si la respuesta es 400 y luego incluyo el post de mi API como parte del error, pero no puedo parecerme get los datos de respuesta de la request cuando el resultado es un error.

Aquí está mi código:

Alamofire.request( method, Constants.baseURL + route, parameters: fullParameters) .validate() .responseJSON { response in let json = JSON(response.result.value!) switch response.result { case .Success: completion?(json["data"]) case .Failure(let errorData): failure?(errorData, json["errmsg"]) } } 

Lo que está sucediendo en esto, es que cuando la respuesta es un error, se rompe porque response.result.value es nula, pero me gustaría que fuera el JSON devuelto desde la API, sin importar qué. Cuando la respuesta es un éxito, por otro lado, funciona perfectamente.

Dado que está llamando a validate() Alamofire está automáticamente validando el código de estado de 200...299 .

Si no desea que Alamofire valide su código de estado, pero desea hacerlo usted mismo manualmente, tiene dos opciones:

  • Elimine .validate() y maneje todo manualmente.
  • Cambie validate() a .validate(statusCode: yourRange) para el range que desea permitir y .validate(statusCode: yourRange) manualmente.

Más información aquí .