導入
アプリを閉じても設定やデータが残っていてほしい。端末にデータを保存する 永続化 の代表が UserDefaults(小さな設定)と SwiftData(本格的なデータ)です。
説明
保存したいデータの「量と種類」で使い分けます。
- UserDefaults … 「ダークモードのオン/オフ」「最後に見たタブ」などの 小さな設定値 を、キーと値で手軽に保存。
- SwiftData … 「タスク一覧」「メモの全件」などの たくさんの構造化データ を、モデル単位で保存・検索。
UserDefaultsの例(キーで出し入れ):
// 保存
UserDefaults.standard.set(true, forKey: "isDarkMode")
// 読み込み
let isDark = UserDefaults.standard.bool(forKey: "isDarkMode")
SwiftDataの例(モデルに @Model を付けて、まるごと保存):
import SwiftData
@Model
class Task {
var title: String
var done: Bool
init(title: String, done: Bool = false) {
self.title = title
self.done = done
}
}
@Model を付けた class は、SwiftDataが自動でデータベースに保存・読み出しをしてくれます。SwiftUIからは @Query で一覧を取り出し、追加・削除がそのまま保存に反映されます。
「設定はUserDefaults、アプリの本体データはSwiftData」と覚えておけば、たいていの保存は困りません。
まとめ
- 小さな設定は UserDefaults(キーと値で手軽に)。
- たくさんの構造化データは SwiftData(
@Modelでモデルごと保存)。 - 保存する量と種類で道具を選ぶ。