Looking for core-data Answers? Try Ask4KnowledgeBase
Looking for core-data Keywords? Try Ask4Keywords

core-dataコアデータスタック


備考

これは、プロジェクトが作成されたときにコアデータを使用してプロジェクトが作成された場合、最初にAppDelegateファイルに配置されるコアデータスタックの実装です。これらの関数はCoreDataStack.swift別のクラスで実装することもできます。主な機能の1つは、NSManagedObjectContextを取得することです。

目標-C

- (NSManagedObjectContext *)managedObjectContext {...}

スウィフト2

lazy var managedObjectContext: NSManagedObjectContext = {...}

スウィフト3

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

永続ストアからオブジェクトをフェッチするときは、テンポラリ・コピーをスクラッチ・パッドに持ってきて、オブジェクト・グラフ(またはオブジェクト・グラフの集合)を形成します。実際に変更を保存しないかぎり、これらのオブジェクトを変更できますが、永続ストアは変更されません。

すべての管理対象オブジェクトは、管理対象オブジェクトコンテキストに登録する必要があります。コンテキストを使用してオブジェクトグラフにオブジェクトを追加し、オブジェクトグラフからオブジェクトを削除します。コンテキストは、個々のオブジェクトの属性とオブジェクト間の関係の両方に加えた変更を追跡します。変更を追跡することによって、コンテキストは元に戻すとやり直しのサポートを提供することができます。また、オブジェクト間の関係を変更すると、オブジェクトグラフの整合性が維持されます。

変更を保存すると、コンテキストによってオブジェクトが有効な状態になります。変更は永続ストア(またはストア)に書き込まれ、作成したオブジェクトの新しいレコードが追加され、削除したオブジェクトのレコードは削除されます。

出典: Apple Core Data Programming:コアデータスタックの初期化

コアデータスタック 関連する例