0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SwiftUI】非同期処理(async/await)でUIを止めずにデータを保存する方法を学習

Posted at

SwiftUIでリストにアイテムを追加したとき、データを保存する処理が重いとUIが一瞬止まってしまうことがあります。
これを防ぐために、async/await を使って非同期的にデータを保存・読み込みできるようにしました。
💡 改良ポイント
同期処理(普通のfunc)でファイル保存を行うと、保存が完了するまでUIがブロックされてしまいます。
特にデータ量が多い場合、スクロールやボタン操作が固まる原因になります。
そこで、Task と async/await を利用して
UIを保ったままバックグラウンドで保存処理を行うようにしました。
🧩 実装例
ViewModel(ListViewModel.swift)
保存・読み込みを非同期関数として定義しています。
スクリーンショット 0007-10-10 23.21.43.png
View側での呼び出し
.task モディファイアを使うことで、
View が表示されたタイミングで非同期処理を呼び出せます。
スクリーンショット 0007-10-10 23.22.23.png
これで、アプリ起動時に保存されたデータをバックグラウンドで読み込むようになります。
✅ 実行結果
非同期処理にすることで、
リストにアイテムを追加したり削除しても UIが固まらずスムーズに動作するようになりました。
特に実機で試すと違いが分かりやすく、
スクロールやボタンタップがストレスなく動作します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?