381

以前のバージョンの Swift では、次のコードで遅延を作成できました。

let time = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW), 4 * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue()) {
    //put your code which should be executed with a delay here
}

しかし、現在、Swift 3 では、Xcode は自動的に 6 つの異なるものを変更しますが、次のエラーが表示されます:「DispatchTime.now期待値dispatch_time_takaに変換できませんUInt64。」

Swift 3 で一連のコードを実行する前に、どのように遅延を作成できますか?

4

7 に答える 7

1104

いろいろ調べた結果、やっとこれにたどり着きました。

DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { // Change `2.0` to the desired number of seconds.
   // Code you want to be delayed
}

これにより、Swift 3 および Swift 4 で目的の「待機」効果が作成されます。

この回答の一部に触発されました。

于 2016-06-25T17:30:44.493 に答える
59

Swift 3.0以降で実装された次の関数を試してください

func delayWithSeconds(_ seconds: Double, completion: @escaping () -> ()) {
    DispatchQueue.main.asyncAfter(deadline: .now() + seconds) { 
        completion()
    }
}

使用法

delayWithSeconds(1) {
   //Do something
}
于 2016-10-24T06:04:27.317 に答える