2016-02-17 13 views
6

私は自分のiOSプロジェクトの1つでAlamofireを使用していましたが、最近Alamofire 3.0にアップグレードすると、結果を返すためにフォーマットがわずかに変更されました。私の場合は、ログインAPIを呼び出して結果を返すようにしたいと思います。何らかのエラーが発生する可能性があるので、私はいつもAPIの結果に問題があるので、レスポンスが400であれば私のコードを失敗ブロックにして、私のAPIからのメッセージをエラーが発生した場合は、リクエストから応答データを取得できないようです。この中で何が起こっているAlamofireエラーからの応答データの取得

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

応答が失敗したとき、response.result.valueがnilであるので、それは壊れるが、私はそれがJSONになりたいということです。ここで

は私のコードです何があってもAPIから返されました。一方、応答が成功した場合、それは完全に機能します。

答えて

2

validate()を呼び出しているので、Alamofireは自動的にステータスコードを200...299から検証しています。

  • .validate()を削除し、手動ですべてを処理:

    するとあなたはAlamofireがあなたのステータスコードを検証する必要はありませんが、あなたはそれを自分で行いたい場合は、手動で2つのオプションがあります。

  • 許可したい範囲でvalidate().validate(statusCode: yourRange)を変更し、手動で処理します。

詳細情報here

+0

それが解決しました。ありがとうございました! :) – Henry

関連する問題