重新指定一对一关系将为以前的对象/CoreData iOS null



我有两个实体。ObjectA通过多对多关系存储ObjectB的所有对象。ObjectA还使用一对一关系将一个特定对象存储为默认对象。其思想是能够为EntityA分配许多不同的子对象,同时保留对一个特定子对象的特定引用。这个想法在我的整个项目中都非常好,在一种情况下除外(相同的代码和相同的实体关系设置。

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

EntityA中的多对多关系"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,然后将该对象写回数组。一定有一个简单的解释我忽略了。再来杯咖啡?哈哈。非常感谢你的帮助。我已经为每段关系尝试了所有不同的删除规则,只是为了好玩。

问题已解决。肯定需要更多的咖啡。发生的情况是,一对一关系使用了对多关系的倒数,导致它完全按照它应该做的去做,变成null。。。

最新更新