Ios 直接设置NSSet关系时,核心数据是否会填充反向关系?

Ios 直接设置NSSet关系时,核心数据是否会填充反向关系?,ios,core-data,relationship,Ios,Core Data,Relationship,举例来说: 我有一个实体用户,还有一个实体设备 用户与设备有一对多关系,称为设备 设备与此关系相反,称为用户 现在,我从网络服务中收集、保存大量设备,将它们添加到NSSet,然后将它们绑定到特定用户,因此我会: NSSet *collectedDevices = [API getSomeDevices]; someUser.devices = collectedDevices; 核心数据是否会为每个设备为我填充反向的用户关系?它是否观察到关系设置器 背景: 我知道用于设置集合的核心数据设置

举例来说:

我有一个实体
用户
,还有一个实体
设备

用户
设备
有一对多关系,称为
设备

设备
与此关系相反,称为
用户


现在,我从网络服务中收集、保存大量设备,将它们添加到
NSSet
,然后将它们绑定到特定用户,因此我会:

NSSet *collectedDevices = [API getSomeDevices];
someUser.devices = collectedDevices;
核心数据是否会为每个
设备
为我填充反向的
用户
关系?它是否观察到关系设置器


背景:


我知道用于设置集合的核心数据设置器,但我希望避免使用它们。实际上,我正在使用KVC从JSON表示中重建核心数据实体,而不需要硬编码属性和关系,只需枚举它们的实体描述,并设置匹配值。

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


但是,当它设置为“反向”时,可能会略有变化。在某些情况下,它可以立即设置,而在其他情况下,它可以等到运行循环结束后再设置反转。只要所有相关对象都是根据相同的
NSManagedObjectContext
创建的,则核心数据将保持引用完整性。

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


但是,当它设置为“反向”时,可能会略有变化。在某些情况下,它可以立即设置,而在其他情况下,它可以等到运行循环结束后再设置反转。只要所有相关对象都是针对相同的
NSManagedObjectContext
创建的,那么核心数据将保持引用完整性。

NSSet是一组NSManagedObjects吗?@k1th是。从服务器获取时,我在子上下文中创建了它们。@MartinR否,希望得到一个即时的是/否答案。您需要尝试一下。我不认为这种关系会在不同背景下起作用。通常Coredata会(通过设计)创建反向关系——在我的简单应用程序中就是这样。关于@dynamic properties和重写KVO,有一些有趣的提示:为什么不在同一个上下文中执行呢?@k1th有些情况下,我不想只保存结果。这就是为什么我需要一个临时上下文。NSSet是一组NSManagedObjects吗?@k1th是的。从服务器获取时,我在子上下文中创建了它们。@MartinR否,希望得到一个即时的是/否答案。您需要尝试一下。我不认为这种关系会在不同背景下起作用。通常Coredata会(通过设计)创建反向关系——在我的简单应用程序中就是这样。关于@dynamic properties和重写KVO,有一些有趣的提示:为什么不在同一个上下文中执行呢?@k1th有些情况下,我不想只保存结果。这就是为什么我需要一个临时环境。谢谢,这对我来说已经足够了。还有更多的事情。为什么即使核心数据也会创建像
-(void)addDevices:(NSSet*)值这样的方法它是否也通过简单的属性集工作?事实上,这种方法让我对整个事情产生了怀疑。谢谢,这对我来说已经足够了。还有更多的事情。为什么即使核心数据也会创建像
-(void)addDevices:(NSSet*)值这样的方法它是否也通过简单的属性集工作?实际上,这种方法让我对整个事情产生了怀疑。