更改核心数据中的验证规则时是否需要轻量级迁移



我知道轻量级迁移可以处理这些事情:

  • 添加或删除实体、属性或关系
  • 使用默认值使属性非可选
  • 使非可选属性可选

但是,我们是否需要轻量级迁移来更改验证规则?

以及如何处理我们定义如下内容的情况:

属性为整数,其最小值为 0,最大值为 100。并且有一些从 0 到 100 的值添加到持久存储中。然后,我们更改将此属性的最小值设置为 20 和最大值设置为 50 的规则。

Core Data 将如何应对此更改,因为现在会有一些数据具有无效值?如果需要,如何处理?

首先,不,如果您只想包含新的验证规则,则无需更新核心数据模型版本并使用轻量级迁移。更改验证规则不会更改模型,因此它会正常打开。

对于不符合验证的旧数据,一开始应该什么都不发生。核心数据不会触及不需要更改的记录。验证通常在save操作期间触发。

这意味着下次保存时,您将收到验证错误。一种解决方案是在更改验证规则后,在对数据进行任何其他更改之前save在应用启动时循环访问所有受影响的数据。

如果这不可行(例如,由于数据量非常大),则必须进行自定义迁移,并通过您设置的迁移规则相应地修改所有无效数据。

相关内容

最新更新