以示例:
我有一个实体User
和一个实体Device
。
User
与Device
有To To关系,称为 devices
。
Device
具有此关系的倒数,称为user
。
现在我收集,保留大量设备,例如一个网络服务,将它们水合成NSSet
,然后我将它们绑定到特定用户,所以我这样做:
NSSet *collectedDevices = [API getSomeDevices];
someUser.devices = collectedDevices;
核心数据是否会为每个 user
填充反向 Device
关系?是否观察到建立关系的人?
背景:
我知道用于设置集合的核心数据设置器,但我想避免使用它们。我实际上是使用KVC从JSON表示重构核心数据实体,没有硬编码属性,关系,只是枚举它们的实体描述,并设置匹配值。
答案 0 :(得分:4)
是的,无论您使用属性还是KVC或核心数据特定方法(如-setPrimitiveValue:forKey:
),核心数据都将设置反向关系。
然而,当 时,设置反转可以稍微变化。它可以在某些情况下立即设置它,而在其他情况下它可能会等到运行循环结束以设置反转。只要所有相关的对象都是针对相同的NSManagedObjectContext
创建的,那么引用完整性将由Core Data维护。