Core Data轻量级迁移多数据模型版本的考虑
Consideration of multiple datamodel versions with Core Data light weight migration
我是核心数据迁移的新手。我阅读了有关轻量级迁移的教程。场景是这样的:
- 我创建了一个数据模型,它是版本-1。
- 所以我必须在我的实体中添加一个属性,我使用轻量级迁移来完成此操作。现在数据模型是版本 2。
- 遗憾的是,我需要再次添加另一个属性。我仍然使用轻量级迁移来做到这一点,现在数据模型是版本 3。
如果我的用户经常更新,那没关系。但是,如果我的用户拥有数据模型版本 1,并将应用程序直接更新到数据模型版本 3 怎么办?我是否需要编写代码来处理从 v1 到 v3 的迁移,还是因为我使用了轻量级迁移,它会自动为我处理?
根据我的经验,这会自动运行。它也很容易测试,所以我会推荐它。创建 v1,在设备上安装应用程序,向应用程序添加一些数据。在同一台设备上创建 v2、v3,然后 运行 应用程序。有用吗?
此外,您在编写新的应用程序代码时需要小心,不要假设新字段中包含升级时数据库中任何现有记录的有效数据。
您的应用需要能够处理所有可能发生的迁移。如果当前版本是第三,肯定可以将之前的所有版本升级到第三版本。
这并不意味着您实际上必须为迁移编写代码。如果自动轻量级迁移是可能的,那么它就可以工作,而无需任何自定义迁移代码。这是否有效取决于模型如何改变。如果可以使用自动轻量级迁移进行 v1 --> v3 迁移,则可以使用它。如果自动轻量级迁移不行,你需要自己处理。答案取决于仅版本 1 与版本 3 的相似程度,与还有版本 2 的事实无关。
我是核心数据迁移的新手。我阅读了有关轻量级迁移的教程。场景是这样的:
- 我创建了一个数据模型,它是版本-1。
- 所以我必须在我的实体中添加一个属性,我使用轻量级迁移来完成此操作。现在数据模型是版本 2。
- 遗憾的是,我需要再次添加另一个属性。我仍然使用轻量级迁移来做到这一点,现在数据模型是版本 3。
如果我的用户经常更新,那没关系。但是,如果我的用户拥有数据模型版本 1,并将应用程序直接更新到数据模型版本 3 怎么办?我是否需要编写代码来处理从 v1 到 v3 的迁移,还是因为我使用了轻量级迁移,它会自动为我处理?
根据我的经验,这会自动运行。它也很容易测试,所以我会推荐它。创建 v1,在设备上安装应用程序,向应用程序添加一些数据。在同一台设备上创建 v2、v3,然后 运行 应用程序。有用吗?
此外,您在编写新的应用程序代码时需要小心,不要假设新字段中包含升级时数据库中任何现有记录的有效数据。
您的应用需要能够处理所有可能发生的迁移。如果当前版本是第三,肯定可以将之前的所有版本升级到第三版本。
这并不意味着您实际上必须为迁移编写代码。如果自动轻量级迁移是可能的,那么它就可以工作,而无需任何自定义迁移代码。这是否有效取决于模型如何改变。如果可以使用自动轻量级迁移进行 v1 --> v3 迁移,则可以使用它。如果自动轻量级迁移不行,你需要自己处理。答案取决于仅版本 1 与版本 3 的相似程度,与还有版本 2 的事实无关。