2

我正在对 iOS 应用程序进行重大更新。假设我们有两个分支,develop包含当前 App Store 上的内容和feature/new_version一个具有重大更新的分支。

feature/new_version有很多模型更改,所以那里有一个新的模型版本,可以添加/删除实体、属性等。另一方面,我们在 中进行了一些小的改进和错误修复develop,这也导致了新模型版本的创建(这些也是提交给 App Store 的更新)。

现在我被两个具有非常不同数据模型的分支所困。问题是:如果我将“缺失”的属性添加到feature/new_version模型中,当我向 App Store 提交主要更新时,核心数据是否足够智能以进行自动轻量级迁移?或者我应该下载使用的数据模型develop并基于该模型创建一个新的模型版本,feature/new_version然后重新添加/删除自我第一次创建分支以来的所有更改?

4

1 回答 1

2

自动轻量级迁移是否有效取决于从旧模型到新模型的更改的性质。new_version在您的情况下,当前发布的版本与您的分支中的版本之间的差异。

如果更改只是添加新属性,没问题,这就是设计自动轻量级迁移的场景。如果它们更复杂,您更有可能需要一些替代迁移方案。您没有详细说明更改,但由于您说新版本“添加/删除实体”自动迁移听起来不太可能。如果模型发生结构变化,添加“缺失”属性将无济于事。Core Data 不介意简单的迁移,但不会推断模型结构的重构。

你如何创建合并模型并不重要,只要它包含你需要的一切。如果只需要添加新属性,就没有理由重新开始。重要的是生成的模型是正确的,而不是您为实现它而采取的步骤。

判断自动轻量级迁移是否有效的最简单方法通常是在调试版本上尝试一下,看看会发生什么。在设备上安装当前发布的版本,创建一些数据,然后使用 Xcode 安装新版本。添加持久存储时,请确保NSMigratePersistentStoresAutomaticallyOption两者NSInferMappingModelAutomaticallyOption都是。YES如果它有效,那就太好了。如果没有,Core Data 会为模型需要的不仅仅是微不足道的更改提供替代方案。

于 2013-06-18T17:01:21.317 回答