繁体   English   中英

代码 = 134110 - 验证错误缺少强制性目标属性上的属性值

[英]Code=134110 - Validation error missing attribute values on mandatory destination attribute

语境:

  • 使用 CoreData 的应用程序
  • 过去成功执行了一些轻量级迁移(达到模型版本的第 4 次迭代)
  • 客户想要一个新功能
    • 创建了第 5 个模型版本
    • 向 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}";

}

解决方案:

我不完全理解为什么会发生这种情况(我太累了,很想把这个问题抛在脑后),但是“强制目标属性”的事情向我指出了将属性设置为可选的方向。 无论是正确的做法还是普通的 hack ......我不知道......但它解决了我的问题,我现在可以继续下一个

在此处输入图片说明

你几乎一针见血,但听起来你可能不知道为什么。 这是因为:

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

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

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

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

我认为提供默认值比多余的可选性更好。

在此处输入图片说明

仅当值确实是可选的时才使用 optional 更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM