Code = 134110 - 验证错误缺少必需目标属性的属性值

Flo*_*giu 4 core-data lightweight-processes ios swift

语境:

  • 使用CoreData的应用程序
  • 一些轻量级迁移过去成功执行(达到模型版本的第4次迭代)
  • 客户想要一个新功能
    • 创建了第五个模型版本
    • 向TestModel实体添加了一个单一的糟糕新属性,一个名为new_one的非可选布尔值

结果:

CoreData: error: NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=134110 \"An error occurred during persistent store migration.\" 

UserInfo={

entity= TestModel, 

attribute=new_one, 

reason=Validation error missing attribute values on mandatory destination attribute}";

}
Run Code Online (Sandbox Code Playgroud)

解:

我不完全理解为什么会发生这种情况(我太累了,并且急于将此问题抛在身后),但"强制性目标属性"的事情使我指向将属性设置为可选的方向.无论是正确的做法还是普通的黑客攻击......我不知道......但它解决了我的问题,我现在可以继续下一个

在此输入图像描述

Tom*_*ton 9

你几乎击中了头部,但听起来好像你不知道为什么.这是因为:

  1. 该属性是必需的
  2. 这意味着在保存更改时它必须具有值
  3. 迁移可以保存更改,但是
  4. 您没有为此属性提供任何值.

这直接导致您收到的错误.

您可以使用以下任一方法解决此问题:

  • 像你一样使属性可选.迁移后,没有迁移的对象具有值,但这没关系.
  • 保持非可选,但在模型编辑器中提供默认值.迁移后,所有迁移的对象都具有默认值.
  • 设置非轻量级迁移并在迁移时提供值.迁移后,每个迁移的对象都具有您在迁移期间提供的任何值.