Swift で完了ハンドラーを持つ関数を作成するにはどうすればよいでしょうか? 質問する

Swift で完了ハンドラーを持つ関数を作成するにはどうすればよいでしょうか? 質問する

これにどうアプローチするか興味がありました。関数があり、それが完全に実行されたときに何かが起きるようにしたい場合、これを関数にどのように追加すればよいでしょうか。ありがとうございます。

ベストアンサー1

ネットワークからファイルをダウンロードするダウンロード機能があり、ダウンロードタスクが完了したら通知を受け取りたいとします。

typealias CompletionHandler = (success:Bool) -> Void

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

    // download code.

    let flag = true // true if download succeed,false otherwise

    completionHandler(success: flag)
}

// How to use it.

downloadFileFromURL(NSURL(string: "url_str")!, { (success) -> Void in
    
    // When download completes,control flow goes here.
    if success {
        // download success
    } else {
        // download fail
    }
})

おすすめ記事