2016-09-01 12 views
1

私のアプリは、来るデータに大きく依存しています。私は、データがダウンロードされている間に、アクティビティインジケータを実行し、ビュー上のユーザー対話を無効にしたい。完了ハンドラが完了した場合はtrue

完了ハンドラが完了したときに何かを確認したり戻したりする方法はありますか?

答えて

0

完了ハンドラを保つ性質を定義し、それを呼び出すすべてのデータが得られた場合:ダウンロードが成功した場合

var didObtainAllData: (() -> Void)? 

func obtainData() { 
    .... 
    // When data is obtained. 
    didObtainAllData?() 
} 
+0

を書くことができますobtainDataはcompletionhandlerとは異なる順序で実行される通常の関数です。 – bCM

+0

'didObtainAllData'を補完ハンドラの中に入れたり、外に出したりできません。 – bCM

+0

@bCM申し訳ありませんが、私はあなたが言っていることを得ていませんでした。 –

0
typealias CompletionHandler = (success:Bool) -> Void 

func downloadFileFromURL(url: NSURL,completionHandler: CompletionHandler) { 

**download code** 

let flag = true 

真、そうでない場合はfalse

completionHandler(success: flag) 
} 

それの使い方。

downloadFileFromURL(NSURL(string: "url_str")!, { (success) -> Void in 

**When download completes,control flow goes here.** 

    if success { 

    } else { 
    } 
}) 
0

あなたは

func processingTask(condition: String, completionHandler:(finished: Bool)-> Void) ->Void {   
} 

使用

processingTask("test") { (finished) in 
     if finished { 
      // To do task you want 
     } 
    } 
関連する問題