これは、プロジェクトが作成されたときにコアデータを使用してプロジェクトが作成された場合、最初にAppDelegate
ファイルに配置されるコアデータスタックの実装です。これらの関数はCoreDataStack.swift
別のクラスで実装することもできます。主な機能の1つは、NSManagedObjectContextを取得することです。
- (NSManagedObjectContext *)managedObjectContext {...}
lazy var managedObjectContext: NSManagedObjectContext = {...}
lazy var persistentContainer: NSPersistentContainer = {...)
let managedObjectContext = persistentContainer.viewContext
アプリケーション内のオブジェクトと外部データストア間で通信するコアデータスタック。コアデータスタックは、アプリケーションがビジネスロジックに集中できるように、外部データストアとのすべての対話を処理します。スタックは、管理対象オブジェクトコンテキスト( NSManagedObjectContext
)、永続ストアコーディネータ( NSPersistentStoreCoordinator
)、および管理対象オブジェクトモデル( NSManagedObjectModel
)の3つの主要オブジェクトから構成されます。
NSManagedObjectModel
NSManagedObjectModel
インスタンスは、コアデータスタックによってアクセスされるデータを記述します。 NSManagedObjectModel
(しばしば「ママ」と呼ばれる)は、スタックの作成の最初のステップとしてメモリにロードされます。 NSManagedObjectModel
の例は、DataModel.momdです。 NSManagedObjectModel
は、データの構造を定義します
NSPersistentStoreCoordinator
NSPersistentStoreCoordinator
は、永続ストア内のデータからオブジェクトを認識し、そのオブジェクトを要求元のNSManagedObjectContext
ます。モデル内のエンティティの新しいインスタンスを作成し、既存のインスタンスを永続ストア( NSPersistentStore
)から取得します。 NSPersistentStoreCoordinator
は、データがNSManagedObjectModel
定義と一致する一貫した状態にあることも確認します。
NSManagedObjectContext
永続ストアからオブジェクトをフェッチするときは、テンポラリ・コピーをスクラッチ・パッドに持ってきて、オブジェクト・グラフ(またはオブジェクト・グラフの集合)を形成します。実際に変更を保存しないかぎり、これらのオブジェクトを変更できますが、永続ストアは変更されません。
すべての管理対象オブジェクトは、管理対象オブジェクトコンテキストに登録する必要があります。コンテキストを使用してオブジェクトグラフにオブジェクトを追加し、オブジェクトグラフからオブジェクトを削除します。コンテキストは、個々のオブジェクトの属性とオブジェクト間の関係の両方に加えた変更を追跡します。変更を追跡することによって、コンテキストは元に戻すとやり直しのサポートを提供することができます。また、オブジェクト間の関係を変更すると、オブジェクトグラフの整合性が維持されます。
変更を保存すると、コンテキストによってオブジェクトが有効な状態になります。変更は永続ストア(またはストア)に書き込まれ、作成したオブジェクトの新しいレコードが追加され、削除したオブジェクトのレコードは削除されます。