重新分配一对一关系会使先前的对象/ CoreData iOS无效

时间:2012-02-26 19:11:25

标签: ios core-data relationship nsmanagedobject

我有2个实体。 ObjectA通过多对多关系存储所有ObjectB的对象。 ObjectA还使用一对一关系将一个特定对象存储为默认对象。这个想法是能够为EntityA分配许多不同的子对象,同时保持对一个特定子对象的特定引用。这个想法在我的整个项目中完全正常,在一种情况下豁免(相同的代码和相同的实体关系设置。

我遇到的问题是当我通过简单地ObjectA.defaultObject = someObject23;将现有defaultObject重新分配给新的不同对象时,这会正确地分配新对象,但在此过程中,我对原始To-Many关系的引用将变为null 。

来自EntityA的to-many关系'AllObjects'具有EntityB的级联删除规则。 一对一关系'DefaultObject'对于EntityB具有NULL删除规则。 两者都有反转。

这是一个真正的快速概述。

ObjectA.allObjects = 10 objects; // 1 of these is someObject1

ObjectA.defaultSomeObject = someObject1; // This works fine.
ObjectA.defaultSomeObject = someObject2; // This assigns the new defaultSomeObject=someObject2,
// but in the process it removes the someObject1 from my ObjectA.allObjects array (Goes NULL)

我很难过,因为就像我说我多次使用过这种技术一样,我唯一成功的解决办法是“装配”它并实际保存对前一个对象的引用,从ObjectA数组中删除它,设置新的defaultObject,然后将该对象写回数组。必须有一个我忽略的简单解释。更多咖啡?大声笑。任何帮助是极大的赞赏。我已经为每个关系尝试了所有不同的删除规则以及踢腿。

1 个答案:

答案 0 :(得分:0)

问题解决了。绝对需要更多咖啡。发生的事情是一对一的关系正在使用to-many关系逆向导致它完全按照它应该做的去做,去null ...