1. ホーム
  2. function

[解決済み] どのように私はSwiftで完了ハンドラを持つ関数を作成することができましたか?

2022-04-26 14:34:36

質問

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

どのように解決するのですか?

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

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
    }
})

お役に立てれば幸いです。