注:このAPIは、2012年にこれを書いたときは最先端であり、詳細が変更されました。必要に応じて、これを更新してください。私は現在Cocoa/ObjCプロジェクトに取り組んでいないので、残念ながらこれを最新の状態に保つのは得意ではありません。全体的な要点は正しいようです。
Core Dataは、オブジェクトの永続性を管理するのに役立つツールのセットを提供します。つまり、NSManagedObject
ある種のストレージからオブジェクトのセット()を保存してフェッチする機能です。
Core Dataオブジェクトを操作するときは、NSManagedObjectContext
から取得したを使用して操作しますNSPersistentStoreCoordinator
。次に、PSCはNSPersistentStore
、ストアでの実際の操作を処理する1つ以上のサブクラスと通信します。(データベースに対して作成/読み取り/更新/削除を考えてください。)
Core Dataは、主に2種類のストアをサポートしていNSPersistentStore
ますNSAtomicStore
。永続ストアはデータベースと考えることができます。データベースから任意のレコードのセットを段階的に保存、更新、およびフェッチできます。アトミックストアは、オブジェクトグラフの「全か無かの」表現です。これは、構造化ファイルのメモリ内表現であることが意図されています。
CoreDataに付属しているストアタイプは次のとおりです。
NSSQLLiteStoreType
(NSPersistentStore
)
NSInMemoryStoreType
(NSPersistentStore
)
NSXMLStoreType
(NSAtomicStore
)
NSBinaryStoreType
(NSAtomicStore
)
NSPersistentStore
はサブクラス化することを明示的に禁止されているため、これまで、独自の非アトミックストアバックエンドを作成する方法はありませんでした。つまり、オブジェクトの表現を1つの大きな塊ではなく、断片的に永続化してクエリしたい場合(「グラフ全体をロード」、「グラフ全体を保存」)、運が悪かったのです。iOS5が導入されるまでNSIncrementalStore
。
NSIncrementalStore
は抽象クラス(からの子孫NSPersistentStore
)であり、そのメソッドを実装して、制御するデータストアとコアデータの世界との間にアダプタを提供します。これを使用してリモートAPIをラップできます。または、気になる場合は、NULevelDBやNanoStoreなどをラップできます(なぜそうするのかはわかりませんが)。