前提・実現したいこと
DispatchQueue.main.asyncAfterを使って8秒後に処理する。というコードを書きました。
ボタンが押されたらこの予定された処理をキャンセルさせたいのですが、どのように書けばいいのでしょうか。
該当のソースコード
swift
1 2var workItem: DispatchWorkItem? 3 4override func viewDidLoad() { 5 workItem = DispatchWorkItem(block: { 6 //処理 7 }) 8 DispatchQueue.main.asyncAfter(deadline: .now() + 8.0, execute: workItem) 9} 10 11@IBAction func button(_ sender: Any) { 12 workItem.cancel //エラー 13} 14
発生している問題・エラーメッセージ
Value of optional type 'DispatchWorkItem?' must be unwrapped to refer to member 'cancel' of wrapped base type 'DispatchWorkItem'
この書いたコードだとエラーが出てしまうのはわかるのですが、他の書き方が分かりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。