【问题标题】:Isn't using lightweight migration with dozens of updates going to kill performance?使用带有数十个更新的轻量级迁移不会降低性能吗?
【发布时间】:2025-12-29 08:50:12
【问题描述】:

我注意到的一个问题是,在发布更新时,我可能必须保持整个模型版本堆栈完好无损。我不确定如果有人拥有包含填充数据的 1.0 版,然后立即更新到 5.0 版而中间没有任何版本会发生什么。因此,迁移还必须知道第一个数据模型是什么样的。或者,这甚至根本不起作用。不知道。

但是,经过一些更改后,我有 25 个数据模型,其中最后一个是当前版本。所以我的猜测是,持久存储协调器将有大量工作迭代这些版本并逐步找出差异。这不烂吗?有解决办法吗?

【问题讨论】:

    标签: iphone core-data mapping-model


    【解决方案1】:

    如果用户从版本 1 升级到版本 5,Core Data 将一次性尝试。

    Core Data 没有“版本 1”和“版本 5”的概念,它只了解源模型和目标模型。当用户加载您的“版本 1”时,Core Data 会在您的包中找到源模型。 Core Data 还将根据“当前”模型确定目的地。它从那里尝试迁移。

    因此,当您创建新版本时,您必须测试每个可能的迁移以确保它们正常工作。如果他们不能使用自动迁移,则为 迁移添加映射模型。

    因此不存在性能问题,因为 Core Data 只会执行一次迁移。

    【讨论】: