考虑使用 Core Data 轻量级迁移的多个数据模型版本
Posted
技术标签:
【中文标题】考虑使用 Core Data 轻量级迁移的多个数据模型版本【英文标题】:Consideration of multiple datamodel versions with Core Data light weight migration 【发布时间】:2015-01-08 03:41:01 【问题描述】:我是 Core Data 迁移的新手。我阅读了有关轻量级迁移的教程。场景是这样的:
我创建了一个数据模型,它是版本 1。 所以我必须在我的实体中添加一个属性,我使用轻量级迁移来做到这一点。现在数据模型是第 2 版。 很遗憾,我需要再次添加另一个属性。我仍然使用轻量级迁移来做到这一点,现在数据模型是版本 3。如果我的用户经常更新,那没关系。但是,如果我的用户拥有数据模型版本 1,并将应用程序直接更新到数据模型版本 3,该怎么办?我需要编写代码来处理从 v1 到 v3 的迁移,还是因为我使用了轻量级迁移而自动为我处理?
【问题讨论】:
【参考方案1】:您的应用需要能够处理所有可能发生的迁移。如果当前版本是第三版,那么必须可以将之前的所有版本升级到第三版。
这并不意味着您实际上必须为迁移编写代码。如果可以进行自动轻量级迁移,那么它就可以工作,而无需任何自定义迁移代码。这是否有效取决于模型的变化方式。如果通过自动轻量级迁移可以实现 v1 --> v3 迁移,则可以使用它。如果无法使用自动轻量级迁移,则需要您自己处理。答案仅取决于版本 1 与版本 3 的相似程度,与还有版本 2 的事实无关。
【讨论】:
我想我明白了:如果核心数据可以自动为 v1 -> v3 创建映射模型(只要 v1 -> v3 满足the doc 中列出的情况,那么它会自动发生.V1,V2,V3有点误导,其实只有V(old)和V(new)吧?【参考方案2】:根据我的经验,这会自动运行。它也很容易测试,所以我建议这样做。创建 v1,在设备上安装应用程序,向应用程序添加一些数据。创建 v2、v3,然后在同一设备上运行应用程序。有用吗?
此外,您在编写新的应用程序代码时需要小心,不要假设新字段在升级时数据库中的任何现有记录都包含有效数据。
【讨论】:
以上是关于考虑使用 Core Data 轻量级迁移的多个数据模型版本的主要内容,如果未能解决你的问题,请参考以下文章