我正在 OS X Lion 上基于 Core Data 的 Cocoa 应用程序工作,我需要能够将数据模型的不同部分(比如 partA 和 partB)保存到单独的文件中。
我需要能够将两个文件一起保存为项目文件/包,但还需要能够独立于 partB 加载和保存 partA。
加载新的 partA 文件应替换当前与 partA 关联的所有数据。保存partA 不应该保存partB 中更改的数据。
A 部分中的实体确实需要与 B 部分中的实体保持关系,但这些可能(并且很可能必须)很弱。
我的主要问题是:实现所需功能的最佳方法是什么?
我的第一种方法是NSManagedObjectModel
包含两种配置,每个部分一个配置。我为每个配置NSPersistentStore
分配了两个实例。NSPersistentStoreCoordinator
和一个分配给它NSManagedObjectContext
的实例。storeCoordinator
保存和打开单独的文件目前是我在这个方法中的主要关注点。NSManagedObjectContext
-save:
消息似乎保存了这两种配置。是否可以只保存对属于特定配置的对象所做的更改NSManagedObjectModel
?或者我需要两个NSManagedObjectContext
实例,每个配置一个?
通过向 for partA 添加存储来打开文件persistentStoreCoordinator
会将数据添加到上下文中,到目前为止我还无法替换数据。有没有办法知道哪个商店与某个配置相关联,也许是通过向 发送消息persistentStoreCoordinator
?
我也在考虑第二种方法:NSPersistentDocument
为我的数据模型中的每个配置设置两个子类,以便能够将数据保存到单独的文件中。但我不确定拥有两个单独的实例是否允许在不同配置中的子类NSManagedObjectContext
之间建立关系?NSManagedObject
如果有人有一个好主意或可以指出我正确的方向,甚至有我如何实现上述功能的示例,那将不胜感激。