0

我们正在执行我们的第一个 iOS 应用程序更新,以及我们的第一个核心数据迁移。

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

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

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

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

在此先感谢,特德

4

2 回答 2

1

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

于 2012-05-21T15:14:14.387 回答
0

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

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

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

于 2012-05-25T16:35:14.500 回答