1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SwiftData】ModelContainerクラスの公式ドキュメントを読む

Last updated at Posted at 2024-06-17

ModelContainerクラス

アプリのスキーマとモデルストレージの構成を管理するオブジェクト

Swiftを基礎から学ぶには
自著、工学社より発売中の「まるごと分かるSwiftプログラミング」をお勧めします。変数、関数、フロー制御構文、データ構造はもちろん、構造体からクロージャ、エクステンション、プロトコル、クロージャまでを基礎からわかりやすく解説しています。
また、Swiftプログラミングを基礎から動画で学びたい方には、Udemyコース「今日からはじめるプログラミング」をお勧めします。

概要

モデルコンテナは、モデルコンテキストとアプリの永続ストレージを仲介します。
モデルコンテナはストレージを総合的に管理し、一貫性と使用可能な状態の維持を保証します。
フェッチを実行するか、モデルコンテキストのsave() メソッドを呼び出すたびに、モデルコンテナはスキーマに基づいて、実際にデータの読み取りや書き込みを実行します。
これによって、フェッチや保存が効率的に調整された方法でのみ行われて、アプリのリソースが保護されることを保証します。
さらに、アプリがCloudKitに対応している場合は、モデルコンテナがデバイス間の永続ストレージを自動的に同期します。

アプリスキーマの発展とともに、コンテナは永続モデルデータを自動的に移行してモデルクラスと一致させ続けます。
異なるスキーマのバージョン間の集約変更が自動移行の機能を超える場合は、コンテナにSchemaMigrationPlanを提供して移行に参加し、正常に完了できるようにします。

For example, you may want use a particular app group container or specify that the storage is ephemeral and should exist only in memory.
デフォルトでは、モデルコンテナは「アプリの永続ストレージをどのように設定するか」について、仮説を立てます。
この前提動作をカスタマイズするには、コンテナにModelConfigurationインスタンスを提供します。
例えば、アプリのグループコンテナを使用したり、ストレージを一時的にしたり、データの存在をメモリ上に制限したりすることを指定できます。

Additionally, the view modifier makes an associated model context available in the SwiftUI environment, which the Query() macro depends on.
SwiftDataを使用するアプリには、少なくとも1つのモデルコンテナが必要です。
クラスのイニシャライザまたは対応するSwiftUIビューモディファイアを使用して、コンテナを作成します。
ビューモディファイアを使用すると、適用したウィンドウグループ内の全ウィンドウ、または適用したビュー階層に属する全ビューが共通のモデルコンテナにアクセスできます。
さらに、ビューモディファイアは、@Queryマクロが適用されたSwiftUIビュー環境でモデルコンテキストを利用できるようにします。

レシピのSwiftDataモデルを利用する例
@main
struct RecipesApp: App {
    var body: some Scene {
        WindowGroup {
            RecipesList()
        }
        .modelContainer(for: Recipe.self)
    }
}

// レシピのリスト
struct RecipesList: View {
    @Query private var recipes: [Recipe]
    
    var body: some View {
        List(recipes) { RecipeRowView($0) }
    }
} 

参考

Apple Developer Documentation

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?