2015-09-22 20 views
6

に変換した後、この行は常にAlamofire要求を行うとJSONレスポンスを取得するために私のために正常に動作しています。Alamofire + SwiftyJSONコンパイルエラーXcodeの7

Alamofire.request(req).responseJSON() { 
     (request, response, data, error) in 

    // .... 

} 

XCodeの7にアップグレードするとスウィフト2.0にプロジェクトを変換した後、私のAlamofireリクエストを持っているコードのすべての行は、このエラーは表示されない:

'(_, _, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void' 
+0

私は混乱しているが、Alamofireドキュメントは、それはそれが呼ばれるべきかだと言います。それは(_、_、_、_) – Lavvo

+0

は、以下の答えを追加しました代わりに示した(_、_)私はまだ2つのparams、同じエラーにそれを取った場合でも、以外にXcode7でAFプロジェクトを開く必要がありましたそれが動作することを願ってください! –

答えて

14

このlinkで答えが見つかりましたがそれは日本語です。今(リンクでの回答から取られた)から正しいようです:

Alamofire.request(.GET, requestUrl).responseJSON { 
    response in 
    if response.result.isSuccess { 
     let jsonDic = response.result.value as! NSDictionary 
     let responseData = jsonDic["responseData"] as! NSDictionary 
     self.newsDataArray = responseData["results"] as! NSArray 
     self.table.reloadData() 
    }    
} 
+0

私は今これを試しています。これまでのところ、これは私のコンパイルエラーを取り除いています。私はテストするために私のアプリを構築する前に、私はあなたに結果を知らせるでしょう、私は様々な領域でこれを何度か行う必要があります。 – Lavvo

+0

あなたは私を救った、これは正解と思われる。要するに、これは今私のために働いています。私はこの新しいフォームに基づいて行う必要がありますが、私はログ文が結果を引き出すのを見ることができます。 – Lavvo

+0

Cocoapodsを使用してAlamofireをインストールすると、この問題は発生しないようです。あなたが密接にプロジェクトに従っていない限り –

0

私はAFでプロジェクトを引き上げ、ここに行く:それはのためだけに3つのパラメータだよう

Alamofire.request(.POST, someRequest).responseJSON { (request, response, result) -> Void in 


    } 

が見えますclosure、request、response &結果オブジェクト。私はこれがSwift 2.0でスローされるものでなければならないと考えています。

.responseSwiftyJSON({ (request, response, json, error) -> Void in 
    if let error = error { 
     print("Received error \(error)") 
     return 
    } 
    else { 
     print("Received json response \(json)") 
    } 
} 

が、今errorErrorType代わりのNSErrorです:Alamofire-SwiftyJSONエラー処理を使用して

0

は同じです。平野AlamofireとiOS JSONを使用して

は、応答とエラーがタイプResult<AnyObject>の結果で統一されている、あなたは結果をアンラップする必要があります。

.responseJSON { request, response, result in 
    switch result { 
    case .Success(let value): 
     print("Received response \(value)") 
    case .Failure(_, let error): 
     print("Received error \(error)") 
    } 
2

旧構文:

Alamofire.request(req).responseJSON() { 
    (request, response, data, error) in 
    // .... 
} 

新しい構文:

Alamofire.request(req).responseJSON() { 
    response in 
    if response.result.isSuccess { 
    let data = response.result.value 
    // .... 
    } 
} 
関連する問題