Ios NSValidationMissingMandatoryPropertyError问题,但已填充所有字段

Ios NSValidationMissingMandatoryPropertyError问题,但已填充所有字段,ios,core-data,Ios,Core Data,我有两个核心数据实体, 一个实体篮子和一个实体橙色,篮子包含多个橙色 篮子 |-物业A |-物业B |-->橙子(NSSet) 篮子中的oranges关系设置为非可选,删除规则为级联,类型为多。 橙色 |-物业A |-物业B |-->篮子 橙色的篮子关系设置为非可选,删除规则为拒绝,类型为1 当我添加一个橙色并保存时,没有问题。 当我删除所有的橙子并保存时,它似乎很好。(直到现在才有问题) 但是,当我删除篮子中的一个橙色时 [self.basket removeOrangesObjec

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

篮子
|-物业A
|-物业B
|-->橙子(NSSet)

篮子中的oranges关系设置为非可选,删除规则为级联,类型为多。

橙色
|-物业A
|-物业B
|-->篮子

橙色的篮子关系设置为非可选,删除规则为拒绝,类型为1

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

但是,当我删除篮子中的一个橙色时

  [self.basket removeOrangesObject:orange];
我得到NSValidationMissingMandatoryPropertyError

如果尝试使用托管对象并从中删除,则会得到NSValidationRelationshipDeniedDeleteError

当我通过orange进行调试时,没有未填充的强制字段(如果有,它将无法保存)

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

我已经做了大量的调试,似乎找不到答案。

这-

[self.basket removeOrangesObject:orange];
不会删除橙色,而是将橙色从篮子中删除。橙色对象仍将存在,但它的
basket
关系将为零。但是,
basket
关系是非可选的,因此不能有不在篮子中的橙子

如果要删除橙色,应使用

[managedObjectContext deleteObject:orange];
您需要将删除规则更改为,以便将orange->basket关系更改为“nullify”


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

这是否意味着我必须在保存上下文之前删除橙色对象:和删除对象?但这样,它将允许删除带有橙色的篮子,并创建大量不同的对象问题对吗?解决问题后移除OrangeSObject和删除Object。。。这应该是解决问题的方法吗?我仍然不明白为什么我不能删除它。不,转发关系仍然是delete cascade,因此删除一个包含桔子的篮子将删除桔子。你不能仅仅删除它,因为我在回答中解释了原因,它会留下一个“unowned”桔子,并且你已经将orange->basket关系设置为非可选