考虑使用Core Data轻量级迁移的多个数据模型版本

时间:2015-01-08 03:41:02

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

我是Core Data迁移的新手。我读了一篇关于轻量级迁移的教程。场景是这样的:

  • 我创建了一个数据模型,它是版本-1。
  • 所以我必须在我的实体中添加一个属性,我是使用轻量级迁移完成的。现在数据模型是版本-2。
  • 可悲的是,我需要再次添加另一个属性。我仍然使用轻量级迁移来做到这一点,现在数据模型是版本-3。

如果我的用户经常更新,那就没关系。但是,如果我的用户拥有数据模型版本1,并将应用程序直接更新为数据模型版本-3,该怎么办?我是否需要编写代码来处理从v1到v3的迁移,或者是否因为我使用轻量级迁移而自动处理?

2 个答案:

答案 0 :(得分:2)

您的应用需要能够处理可能发生的所有可能的迁移。如果当前版本是第三个版本,则必须可以将所有先前版本升级到版本3。

这并不意味着您实际上必须为迁移编写代码。如果可以进行自动轻量级迁移,那么它将起作用,而无需任何自定义迁移代码。这是否有效取决于模型的变化方式。如果是v1 - >通过自动轻量级迁移可以进行v3迁移,您可以使用它。如果自动轻量级迁移无法实现,则需要自行处理。答案取决于关于版本1与版本3的相似之处,并且与版本2的版本无关。

答案 1 :(得分:1)

根据我的经验,这会自动生效。它也相当容易测试,所以我建议这样做。创建v1,在设备上安装应用,向应用添加一些数据。创建v2,v3,然后在同一设备上运行app。它有效吗?

此外,在编写新的应用程序代码时,您需要小心,不要假设新字段在升级时数据库中的任何现有记录中都包含有效数据。