2015-10-04 7 views
8

関数型でない値を呼び出すことはできません 'NSHTTPURLResponse?' enter image description here非機能型の値「NSHTTPURLResponse?」を呼び出すことができません。 Alamofire ObjectMapper

は、誰かがここに私を助けてくださいことはできますか?ここで

は、私が更新されたコードが

public func responseObject<T: Mappable>(queue: dispatch_queue_t?, keyPath: String?, completionHandler: (NSURLRequest, NSHTTPURLResponse?, T?, AnyObject?, ErrorType?) -> Void) -> Self { 

let serializer = Request.JSONResponseSerializer(options: NSJSONReadingOptions.AllowFragments) 

return response(queue: queue, responseSerializer: serializer) { (Response) -> Void in 

     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
      let parsedObject = Mapper<T>().map(keyPath != nil ? Response.result.value?[keyPath!] : Response.result.value) 



      dispatch_async(queue ?? dispatch_get_main_queue()) { 
       completionHandler(self.request!, self.response, parsedObject, Response.result.value ?? Response.result.value, Response.result.error) 
      } 
     } 

    } 
} 
+0

私はAlamofire 2.0レスポンス・シリアライザを使用してみました、これはまた – Abh

+0

、あなたのコードを書き留めscreenshootを投稿しないでください同じエラーを与えます。 – SJuan76

+0

私はコードを追加しました。何か案が? – Abh

答えて

3

がこれを持っていた、ここで、これは固定されている

Alamofire 2.0の戻り値の型を、気付かなかったコード

public func responseObject<T: Mappable>(queue: dispatch_queue_t?, keyPath: String?, completionHandler: (NSURLRequest, NSHTTPURLResponse?, T?, AnyObject?, ErrorType?) -> Void) -> Self { 

    return response(queue: queue, responseSerializer: Request.JSONResponseSerializer(options: NSJSONReadingOptions.AllowFragments)) { request, response, result in 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
      let parsedObject = Mapper<T>().map(keyPath != nil ? result.value?[keyPath!] : result.value) 

      dispatch_async(queue ?? dispatch_get_main_queue()) { 
       completionHandler(self.request!, self.response, parsedObject, result.value ?? result.data, result.error) 
      } 
     } 
    } 
} 

私の悪いがありますエラーが発生した理由を理解するためにしばらく時間がかかりました。 response()メソッド呼び出しのパラメータは、任意のメソッド宣言に一致しないならば、迅速にあなたのコードは、responseプロパティにNSHTTPURLResponseを参照している前提としてように見えます。メソッドの名前を「シャドー」するプロパティがあるため、どのパラメータが問題であるかを示すエラーで迅速に対応することはできません。どのメソッドにもマッチするだけです。

私の場合、completionHandlerのパラメータのために一致しませんでした。注意してください、そのサンプルコード私は.response { response in ... }見て、問題があります。 responseStringresponseJSONなどのメソッドのように、 "応答を返す"クロージャでは、responseメソッドはありません。言っ

Abh、私は正確な問題は、あなたのコードであるか見てから言うことができません。

+0

どうすれば解決できましたか? – dejavu89

+1

'response(queue queue:dispatch_queue_t?= nil、completionHandler:...) - > Self'メソッドを使用して、' .response {response in ...} 'を' completionHandler'に変更しました。サンプルコードから '.response {_、_、_、error in ...} 'にコピーされました。 –

+0

ご回答ありがとうございます。ここでコードを投稿することはできませんでした。それはあなたがそれに答えることができるよう、支援を行ってください、それがhttp://stackoverflow.com/questions/39838463/alamofire-error-after-updating-to-latest-version – dejavu89

0

あなたは@escapingとしてあなたcompletionHandlerをマークする必要があります。

関連する問題