2012-03-14 45 views
0

我之前问过一个关于SQLite迁移到Core Data的问题,并给出了根据我需要保留持久存储的独立答案“只读”店和“自定义存储”:核心数据:使用多个上下文独立持久存储与使用单个上下文的独立持久存储

Updating Application to use Core Data from previous double SQLite only persistent store

我开始这个应用程序的开发,而且目前我打算创造应有2对独立的环境的事实,我可以预见只读卡对象模型在未来版本中保持不变,而自定义模型可能会更改。这样我就只需要定制对象模型的版本,并继续使用相同的只读存储区运送应用程序。

这是一个明智的方式吗?如果是这样,我应该注意哪些障碍?如果不是,那么更好的选择是什么?

+0

可能有帮助,但我最近看到了[分割持久性商店]的一个很好的例子(http://cocoawithlove.com/2011/06/process-of-writing-ios-application.html)。 – rickster 2012-03-14 18:09:19

回答

2

只要两个模型中的实体不相互冲突,就可以在相同的上下文中将两个模型一起使用。您可以使用+modelByMergingModels:方法在运行时从两个或更多模型创建单个模型。使用该新模型初始化持久存储协调器,并将该PSC添加到您的上下文中。

我确定你可以使用单独的托管对象上下文使你的代码正常工作,但是对于Core Data来说很好的一件事是,如果你设置正确,它会管理查找你的细节对象为你。对于只读数据和用户数据使用单个上下文似乎是保持简单代码的积极步骤。

+0

你能澄清你的意思吗?确保“两个模型不会相互冲突?” – 5StringRyan 2012-03-14 18:20:10

+0

@ 5StringRyan我的意思是说,他们都不会尝试定义具有相同名称的实体。如果在一个模型中有一个名为'Product'的实体,那么在另一个模型中使用另一个具有相同名称的实体可能是一个坏主意。 – Caleb 2012-03-14 18:32:00

+0

如果您使用'+ modelByMergingModels,则光偏移将不起作用:'http://stackoverflow.com/questions/10940545/core-data-lightweight-migrations-and-multiple-core-data-model-files-xcdatamod/13852084# 13852084 – 2014-04-14 02:00:52

相关问题