iPhone - 核心数据迁移

时间:2011-09-14 14:38:01

标签: iphone core-data

我有一个至少有300个条目的应用。每个条目代表一个可以免费或应用内购买的对象。该应用程序正在销售中,它附带了一个预先填充的sqlite文件。当应用程序第一次运行时,它会检查数据库是否存在。如果没有,它会将捆绑包中的sqlite文件复制到应用程序的目录中,并启动魔法。

随着时间的推移,用户购买了一些应用程序内对象,数据库会更改以标记购买的条目。

现在我即将发布新版本。这个新版本附带了另一个表示对象的sqlite文件。结构是相同的,但代表新数据库的新sqlite文件现在有更多的对象。

我已阅读文档,但我找不到符合我需要的例子,所以我问你们。我应该遵循哪些步骤?我需要将用户拥有的当前数据库(版本1)替换为新版本(版本2),但是当我这样做时,我需要版本2才能完成版本1的所有更改,因为它已经安装(换句话说,复制包含有关购买信息的实体属性。

我该怎么做?这是版本?移民?

感谢。

1 个答案:

答案 0 :(得分:3)

如果两个数据存储的结构没有改变(管理对象模型是相同的),那么它不是版本控制/迁移。我想说最容易做的就是检查数据库中是否存在新对象,如果它们不存在则添加它们。

另一种方法是使用mergedModelFromBundles同时使用两个sqlite存储。我对此并不了解,可能比在代码中创建新对象并添加它们更麻烦。