我有一个基于文档的核心数据应用程序,它可以作为是。我想补充一个全球持久性存储支持,以保持项目库。

我读过最相关的文档,并且明白,我应该在管理对象模型使用的配置。我定义了两种配置:“DocumentConfiguration”和“LibraryConfiguration”。在文档配置的实体是仅在文件结构中,并在库配置的实体只在库中的配置 - 即,没有重叠

该文档,然后说:“当你创建一个协调你然后用这个模式。”但我不因为我使用的是默认NSPersistentDocument协调实际上创建自己的持久存储区协调员。

这是如何最好地进行,并帮助清理任何误解,我可能有几个问题:

一个。我想获得NSPersistentStoreCoordinator在NSPersistentDocument然后沿行增加一个新的持久存储到它:

NSPersistentStoreCoordinator * coordinator = [[myDocument managedObjectContext] persistentStoreCoordinator];
[coordinator addPersistentStoreWithType:NSXMLStoreType 
    configuration:@"LibraryConfiguration" 
    URL:url 
    options:nil 
    error:&error];

我想,这可能是一个问题,因为我没有,因为我使用NSPersistentDocument提供的默认在NSPersistentDocument的持久性存储协调员提供的其他配置的定义(“DocumentConfiguration”)。我猜它可能会使用零到时候来保存文档。如果是的话,这会是一个问题吗?即,将如何协调知道哪个持久性存储来保存实体与给定的配置定义如果同样的配置并不适用于所有定义的持久性存储(在这种情况下,两个)?我能够设置配置(以“DocumentConfiguration”)的NSPersistentDocument的持久性存储已创建之前/保存?从NSPersistentDocument文档:

  

保存新文档添加了与所选择的URL,并调用保存默认类型的商店:上下文。对于现有的文件,保存只是所调用节省:上下文

B中。它会更好,以创建自己的NSPersistentStoreCoordinator和的NSManagedObjectContext情况下,与定义的配置添加两个持久性存储,然后进行NSPersistentDocument使用这些NSPersistentStoreCoordinator和的NSManagedObjectContext情况下,并释放旧的?如果是这样,我怎么会指定NSPersistentDocument的URL addPersistentStoreWithType:...方法?似乎一旦无标题文档已被保存在这个网址是唯一已知的。 (测试这一点,有不出现任何临时持久性存储(经由上持久存储协调方法persistentStores),直到文档保存首次)。

℃。还是会更好独自离开NSPersistentDocument,并创建自己的NSPersistentStoreCoordinator情况下,我使用专为持久库存储和管理库对象模型?该文档说NSPersistentStoreCoordinator的多个实例应该在多线程核心数据的应用程序可以使用,但我不要求多线程核心的数据支持。它是需要有NSPersistentStoreCoordinator的两个实例 - 一个图书馆,一个用于文件(直觉说,这是没有必要的,可能不是正确的方法)

任何建议?

有帮助吗?

解决方案

我使用的解决方案,它工作得很好是基于C)的上方。我离开NSPersistentDocument,它的单独持久存储协调,而是建立自己的NSPersistentStoreCoordinator情况下,我使用专为持久库存储(全局存储)。

我可以为商店中的配置设置为在情况下,我想与此持久性存储协调器后(例如,“LibraryConfiguration”)相关联的多个存储自定义值。由于库旗舰店由从NSPersistentDocument的持久存储协调持久存储协调不同的管理,我并不需要关心指定为NSPersistentDocument的持久性存储的配置做的。

其他提示

您需要为每种配置的单独持久存储中。这是什么配置,让您以不同的实体存储在相同的数据模型到单独的持久文件。

这里的一个普遍的错误是忘记了一个持久存储协调器可以具有持久存储的任意数量。所有你需要做的就是复制苹果样板创建创建具有不同的名称和/或位置和每两个持久性存储具有不同配置的名称。然后,既持久存储协调补充。

和你做。每个配置的实体实例将进入合适的店面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top