2016-02-17 15 views
6

Ich habe Alamofire in einem meiner iOS-Projekte verwendet, aber kürzlich, als ich auf Alamofire 3.0 aktualisiert habe, hat sich das Format leicht geändert, um Ergebnisse zurückzuliefern. In meinem Fall möchte ich eine Login-API aufrufen und das Ergebnis zurückgeben lassen. Es gibt ein paar Fehler, die passieren können, also gebe ich immer das Ergebnis der API zurück, was das Problem ist, also möchte ich, dass mein Code in einen Fehlerblock geht, wenn die Antwort 400 ist und dann die Nachricht von meiner API als Teil einbeziehe der Fehler, aber ich kann nicht scheinen so die Antwortdaten aus der Anfrage zu erhalten, wenn das Ergebnis ein Fehler ist.Antwortdaten von Alamofire erhalten Fehler

Hier ist mein Code:

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"]) 
      } 
    } 

Was dies geschieht, das heißt, wenn die Antwort ein Fehler ist, es bricht, weil response.result.value Null ist, aber ich würde es die JSON sein mag kam von der API zurück, egal was. Wenn die Antwort erfolgreich ist, funktioniert sie dagegen perfekt.

Antwort

2

Seit Sie anrufen Alamofire überprüft automatisch den Statuscode von 200...299.

Wenn Sie Ihren Statuscode zur Validierung nicht Alamofire wollen, aber Sie wollen es selbst tun manuell haben Sie zwei Möglichkeiten:

  • .validate() entfernen und alles manuell handhaben.
  • Ändern Sie validate() zu .validate(statusCode: yourRange) für den Bereich, den Sie manuell zulassen und behandeln möchten.

Weitere Informationen here.

+0

Das hat es gelöst, vielen Dank! :) – Henry

Verwandte Themen