objective-c – 具有全局持久存储的基于核心数据文档的应用程序

objective-c – 具有全局持久存储的基于核心数据文档的应用程序,第1张

概述我有一个基于文档的核心数据应用程序,它按原样运行.我想添加对全局持久性存储的支持来保存项目库. 我已经阅读了大部分相关文档,并了解我应该在托管对象模型中使用配置.我已经定义了两个配置:“DocumentConfiguration”和“LibraryConfiguration”.文档配置中的实体仅在文档配置中,并且库配置中的实体仅在库配置中 – 即,没有重叠. 然后,文档会说“然后在创建协调器时使用 我有一个基于文档的核心数据应用程序,它按原样运行.我想添加对全局持久性存储的支持来保存项目库.

我已经阅读了大部分相关文档,并了解我应该在托管对象模型中使用配置.我已经定义了两个配置:“documentConfiguration”和“libraryConfiguration”.文档配置中的实体仅在文档配置中,并且库配置中的实体仅在库配置中 – 即,没有重叠.

然后,文档会说“然后在创建协调器时使用此模型”.但是我实际上并没有创建自己的持久存储协调器,因为我使用的是默认的NSPersistentdocument协调器.

关于如何最好地进行并帮助消除我可能遇到的任何误解的几个问题:

A.我是否会在NSPersistentdocument中获取NSPersistentStoreCoordinator,然后按以下方式添加新的持久性存储:

NSPersistentStoreCoordinator * coordinator = [[mydocument managedobjectContext] persistentStoreCoordinator];[coordinator addPersistentStoreWithType:NSXMLStoreType     configuration:@"libraryConfiguration"     URL:url     options:nil     error:&error];

我认为这可能是一个问题,因为我没有在NSPersistentdocument的持久性存储协调器中提供其他配置定义(“documentConfiguration”),因为我使用的是NSPersistentdocument提供的默认值.我猜它在保存文档的时候可能会使用nil.如果是这样,这会是一个问题吗?即,如果没有为所有持久性存储(在这种情况下为两个)定义相同的配置,协调器将如何知道哪个持久性存储保存具有给定配置定义的实体?我能够在创建/保存之前设置NSPersistentdocument持久性存储的配置(到“Doc​​umentConfiguration”)吗?来自NSPersistentdocument文档:

Saving a new document adds a store of the default type with the chosen URL and invokes save: on the context. For an existing document,a save just invokes save: on the context.

B.创建我自己的NSPersistentStoreCoordinator和NSManagedobjectContext实例,添加定义了配置的两个持久存储,然后使NSPersistentdocument使用这些NSPersistentStoreCoordinator和NSManagedobjectContext实例并释放旧实例会更好吗?如果是这样,我如何为addPersistentStoreWithType:…方法指定NSPersistentdocument的url?只有在保存无标题文档后,才会知道此URL. (测试一下,在第一次保存文档之前,似乎没有任何临时持久性存储(通过持久性存储协调器上的方法persistentStores).

C.或者最好不要单独留下NSPersistentdocument,并创建我自己的NSPersistentStoreCoordinator实例,我专门用于持久库存储和托管库对象模型?文档说NSPersistentStoreCoordinator的多个实例应该在多线程Core Data应用程序中使用,但我不需要多线程Core Data支持.是否需要有两个NSPersistentStoreCoordinator实例 – 一个用于库,一个用于文档(直觉说这不是必需的,可能不是正确的方法)?

有什么建议?

解决方法 我使用的解决方案效果很好,基于上面的C).我留下NSPersistentdocument并且它只是持久性存储协调器,而是创建我自己的NSPersistentStoreCoordinator实例,我专门用于持久库存储(全局存储).

我可以将商店的配置设置为自定义值,以防我希望稍后与此持久性存储协调器关联多个存储(例如,“libraryConfiguration”).由于库存储由不同于NSPersistentdocument的持久存储协调器的持久存储协调器管理,因此我不需要担心为NSPersistentdocument的持久存储指定配置.

总结

以上是内存溢出为你收集整理的objective-c – 具有全局持久存储的基于核心数据文档的应用程序全部内容,希望文章能够帮你解决objective-c – 具有全局持久存储的基于核心数据文档的应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1009244.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存