本文へスキップ
BecomeCoder

Swift(iOSアプリ)コース · 第8章 データ・通信・公開 ― 実機で仕上げる · レッスン35

データの永続化 ― UserDefaults と SwiftData

ローカル実施

導入

アプリを閉じても設定やデータが残っていてほしい。端末にデータを保存する 永続化 の代表が 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 でモデルごと保存)。
  • 保存する量と種類で道具を選ぶ。