SwiftUIでリストにアイテムを追加したとき、データを保存する処理が重いとUIが一瞬止まってしまうことがあります。
これを防ぐために、async/await を使って非同期的にデータを保存・読み込みできるようにしました。
💡 改良ポイント
同期処理(普通のfunc)でファイル保存を行うと、保存が完了するまでUIがブロックされてしまいます。
特にデータ量が多い場合、スクロールやボタン操作が固まる原因になります。
そこで、Task と async/await を利用して
UIを保ったままバックグラウンドで保存処理を行うようにしました。
🧩 実装例
ViewModel(ListViewModel.swift)
保存・読み込みを非同期関数として定義しています。
View側での呼び出し
.task モディファイアを使うことで、
View が表示されたタイミングで非同期処理を呼び出せます。
これで、アプリ起動時に保存されたデータをバックグラウンドで読み込むようになります。
✅ 実行結果
非同期処理にすることで、
リストにアイテムを追加したり削除しても UIが固まらずスムーズに動作するようになりました。
特に実機で試すと違いが分かりやすく、
スクロールやボタンタップがストレスなく動作します。
【SwiftUI】非同期処理(async/await)でUIを止めずにデータを保存する方法を学習
Posted at
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme