从集合中删除对象会使其在CoreData中的反向关系无效

时间:2013-05-23 15:37:26

标签: ios objective-c core-data mogenerator

我有一个ObjectA,它与ObjectB有一对多的关系。 ObjectB与ObjectA具有一对一的反向。这一切似乎都很顺利,直到我意识到调用[objectA.objectBSet removeAllObjects]打破了ObjectB的实例的反向关系,其中Set位于Set内部。 objectA.objectBSet只是objectBs的NSMutableOrderedSet,我认为这是来自 mogenerator 工具(如果这有任何区别)。

这可能还是我做错了什么?简单地从父集合中删除一个对象可以自动从CoreData影响其反向关系的值吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

这是应该如何工作的。如果两个关系是反转的,那么它们必须对于每个对象彼此一致。如果您告诉ObjectA删除与ObjectB实例的所有关系,那么这些ObjectB实例也会删除与ObjectA的关系。这就是反向关系如何运作。如果ObjectB实例仍声称与ObjectA实例相关,则反向关系将处于不一致状态。

如果由于某种原因这不是您想要的,请使用<{1}}和ObjectA之间彼此反转的关系。

答案 1 :(得分:0)

是的,当您从Set中删除对象时,CoreData将为您取消反向关系。或者,如果你执行objectB.objectA = nil,它也会从objectA的集合中删除objectB。