2017-03-27 24 views
1

Webサービスを呼び出すメソッドを作成すると、responseHandlerを渡します。 このメソッドの最後に私は持っています: responseHandler(false、nil、error、nil)補完ハンドラ

これはどういう意味ですか?私は別のメソッド(false、nil、error、nil)を渡していますか?これを同じメソッドに戻していますか? この "responseHandler(false、nil、error、nil)"が実行されたときに行われる処理は何ですか?

METHOD =====================================

func sessionTaskPostRequest (_ urlRequest : URLRequest , responseHandler: @escaping ResponseHandler) -> URLSessionTask { 
let sesstionTask : URLSessionTask = networkSession.dataTask(with: urlRequest, completionHandler: { (data : Data? , urlResponse : URLResponse? , error : NSError?) in 

    var json: NSDictionary! 
    do { 
     json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions()) as? NSDictionary 
    } catch { 
     print(error) 
    } 

    if(error != nil) { 
     responseHandler (false , nil , error , nil) 
    } 

THX

+0

'sessionTaskPostRequest'パラメータ(ハンドラ)として関数を渡しています。コードが実行されると、応答ハンドラが実行されます。 –

答えて

0

responseHandlerここにコードブロックがあります。

この意味は?

ほとんどの場合、非同期イベントの応答を処理するコードブロックを使用します。したがって、あなたのケースでは、サーバーへのリクエストが成功したかどうかを知ろうとしています。

提案

は、私はあなたがタイプするResponseHandlerが宣言され、コードで検索するように示唆しています。

ので、あなたがこのブロックに渡すかを知ることができるはずのparams本当の名前を見て
typealias ResponseHandler = (p1: Type, p2: Type, p3: Type, p4: Type) -> Void 

:私はそれのようなものかもしれないと思います。

もう1つのことは、あなたが成功したときにこのブロックを呼び出すべきだと思います。さもなければ、非同期関数が失敗したときだけ報告します。

関連する問題