推断映射模型是否总是导致轻量级迁移?

问题描述 投票:0回答:2

我们有几个案例,当使用 inferred 映射模型时,我们的应用程序似乎无法迁移用户数据。应用程序完成迁移所需时间过长,迁移失败。是的——我们不应该在发布期间迁移!

我想知道推断的映射模型是否有可能not 导致轻量级迁移。我读过的所有帐户建议推断映射必然是轻量级的,但我没有看到一个强有力的声明,即这是一个保证。

我们遇到问题的情况包括从作为外部二进制数据存储的模式中删除的属性(

Allows External Storage
在模式编辑器中被勾选)。我想知道这个特定的迁移,其模型是自动推断的,是否仍然需要将整个数据库绘制到内存中的大量迁移。

有没有办法判断一个特定的推断迁移是否是重量级的?

ios core-data core-data-migration
2个回答
1
投票

除非您自己定义自定义映射模型,否则迁移是定义轻量级。这是文档中对“轻量级”和“自定义”迁移定义的唯一可能解释。

这与您看到的迁移失败无关。也许有些变化需要自定义迁移,这就是轻量级迁移失败的原因。


0
投票

使用

NSMigrationManager
的推断迁移是自动的,但它 always 重量级。要获得轻量级迁移,您需要在将商店添加到协调器时使用
NSInferMappingModelAutomaticallyOption

文档有点混淆了这一点,但我认为它的意思是“如果你能够推断一个映射模型,轻量级迁移是可能的使用其他 API。”所以你可以使用这个测试来检查你的假设,但推断模型本身并不是轻量级的。您还可以从

NSMigrationManager
API 中看到它不是 in situ 因为它需要单独的源和目标 URL。

© www.soinside.com 2019 - 2024. All rights reserved.