核心数据迁移 - 从先前版本迁移选定数据

时间:2012-05-21 14:18:23

标签: ios core-data core-data-migration

我们正在执行首次iOS应用更新,以及我们的首次核心数据迁移。

它似乎比我在网上看到的标准和轻量级核心数据迁移的例子更复杂,但也许我错过了一些东西。

我们的场景是我们更新了.xcdatamodel(只是添加了一个新字段),以及我们的应用程序中使用的很多参考数据(存储在我们的Core Data数据库中),但我们需要保留一些用户数据(存储在同一个Core Data数据库中)。

我已经在我们的.xcdatamodelld文件中添加了多个版本的模型定义,并且使用了轻量级核心数据迁移过程(使用映射模型(.xcmappingmodel文件)),它成功地更新了模型,但是我看不出任何明显的方式,它允许我们将所选数据(用户的数据)从先前版本的数据库导入到与下一版本的应用程序捆绑在一起的新数据(包含我们更新的参考数据)。

非常感谢任何关于如何处理这种情况的建议。

提前致谢,Ted

2 个答案:

答案 0 :(得分:1)

您的用户数据库将“就地”升级。不需要任何迁移或导入/导出。当用户运行新版本的应用程序时,将使用新字段升级现有数据库。我不确定这是否能回答你的问题,但不会有任何“导入”。

答案 1 :(得分:0)

最后,我们通过将用户的数据放入plist文件(其数量相当有限)来解决这种情况,并保留Core Data数据库仅用于系统中的参考数据,因此它将来可以不用担心覆盖。

轻量级迁移在第一次运行时更新数据模型,然后一次性迁移调用创建并填充用户数据plist文件,重命名v1核心数据持久性存储* _migrated.sqlite,从包中复制v2 sqlite数据库进入文件目录,然后重置MOM,并将MOM,MOC和Persistent Store设置为nil,以便下次Core Data启动时使用v2 sqlite数据库作为其持久存储。

呼。我希望这对任何阅读它的人都有意义,随时可以询问任何其他细节,但它真的比听起来简单得多!