NSValidationMissingMandatoryPropertyError问题,但填充了所有字段

时间:2014-12-17 19:35:03

标签: ios core-data

我有两个核心数据实体, 实体篮子和实体橙色,篮子包含多个橙子


| -property A
| -property B
| - > oranges(NSSet)

篮子中的桔子关系设置为非可选,删除规则是级联,键入到多个。

橙色
| -property A
| -property B
| - >篮

橙色的篮子关系设置为非可选,删除规则为拒绝,键入为 - 。

当我添加一个橙色并保存时,没有问题。 当我删除所有橙子并保存它似乎没关系。 (直到现在还没有问题。)

然而,当我删除篮子中存在的一个橙色时;

  [self.basket removeOrangesObject:orange];

我得到NSValidationMissingMandatoryPropertyError

如果我尝试使用托管对象并通过那里删除我得到NSValidationRelationshipDeniedDeleteError

当我通过橙色调试时,没有未填充的必填字段(因为如果有的话,它将无法保存)。

我开始怀疑我的关系或类型是否错误。

我做了大量调试,似乎无法找到答案。

1 个答案:

答案 0 :(得分:2)

这 -

[self.basket removeOrangesObject:orange];

不会删除橙色,它会从篮子中移除橙色。橙色对象仍然存在,但它的basket关系将为零。但是,basket关系不是可选的,因此您不能拥有不在篮子里的橙子。

如果你想删除橙色,你应该使用

[managedObjectContext deleteObject:orange];

并且你需要将删除规则更改为橙色 - >>篮子关系为" nullify"

或者您需要根据原始代码从篮子中删除橙色,然后在保存托管对象上下文之前删除橙色。