在直接设置NSSet关系时,Core Data是否会填充反向关系?

时间:2014-01-28 17:19:06

标签: ios core-data relationship

以示例:

我有一个实体User和一个实体Device

UserDevice有To To关系,称为 devices

Device具有此关系的倒数,称为user


现在我收集,保留大量设备,例如一个网络服务,将它们水合成NSSet,然后我将它们绑定到特定用户,所以我这样做:

NSSet *collectedDevices = [API getSomeDevices];
someUser.devices = collectedDevices;

核心数据是否会为每个 user 填充反向 Device 关系?是否观察到建立关系的人?


背景:

我知道用于设置集合的核心数据设置器,但我想避免使用它们。我实际上是使用KVC从JSON表示重构核心数据实体,没有硬编码属性,关系,只是枚举它们的实体描述,并设置匹配值。

1 个答案:

答案 0 :(得分:4)

是的,无论您使用属性还是KVC或核心数据特定方法(如-setPrimitiveValue:forKey:),核心数据都将设置反向关系。

然而,当 时,设置反转可以稍微变化。它可以在某些情况下立即设置它,而在其他情况下它可能会等到运行循环结束以设置反转。只要所有相关的对象都是针对相同的NSManagedObjectContext创建的,那么引用完整性将由Core Data维护。