【发布时间】:2011-05-03 11:36:23
【问题描述】:
我有多个来自同一个实体的 NSmanagedObject(我们称之为 PersonEntity)。
此实体与另一个实体(我们称为 BusinessEntity)存在“对多”关系。
当我填充我的商店时,我创建了 BusinessEntity managedObject。 在我将此 BusinessEntity managedObject 添加到我的第一个 PersonEntity managedObject 之后。
[(Person *)entity1 addBusinessObject:businessEntity];
[(Person *)entity2 addBusinessObject:businessEntity];
addBusinessObject 函数(由 XCode 生成):
- (void)addBusinessObject:(NSManagedObject *)value {
NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1];
[self willChangeValueForKey:@"business" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
[[self primitiveValueForKey:@"business"] addObject:value];
[self didChangeValueForKey:@"business" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
[changedObjects release];
}
这项工作,但只是在填充之后。
如果我保存商店,则只有 entity1 和 businessEntity 之间的关系存在。
我在 entity2 和 businessEntity 之间没有关系。
真的很奇怪
PS:我的两个实体是 NSManagedObject 的子类,用于未定义的属性和瞬态属性。
感谢您的帮助
【问题讨论】:
-
哪个实体的哪个属性是瞬态的?
PersonEntity和Business实体之间的关系是互惠的吗? -
我找到了解决方案。已经添加了反向关系,现在可以了。
-
反向关系是默认的并且是假定的。事实上,如果没有互惠关系,Xcode 会警告你。
-
是的,但是当我开始这个项目时,我已经添加了切换 MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS 到 YES。真是愚蠢。
-
嗯,一定是Xcode4中的“改进”之一。
标签: core-data relationship nsmanagedobject