Core data 与nsmanagedObject的奇怪关系
我有多个来自同一实体的NSmanagedObject(我们称之为PersonEntity) 这个实体与另一个实体(我们称之为BusinessEntity)的“多个”有关系 当我填充我的商店时,我创建BusinessEntity managedObject。 在我将这个BusinessEntity managedObject添加到我的第一个PersonEntity managedObject之后Core data 与nsmanagedObject的奇怪关系,core-data,relationship,nsmanagedobject,Core Data,Relationship,Nsmanagedobject,我有多个来自同一实体的NSmanagedObject(我们称之为PersonEntity) 这个实体与另一个实体(我们称之为BusinessEntity)的“多个”有关系 当我填充我的商店时,我创建BusinessEntity managedObject。 在我将这个BusinessEntity managedObject添加到我的第一个PersonEntity managedObject之后 [(Person *)entity1 addBusinessObject:businessEntity
[(Person *)entity1 addBusinessObject:businessEntity];
[(Person *)entity2 addBusinessObject:businessEntity];
addBusinessObject函数(通过XCode生成):
这是一项工作,但仅在完成之后
如果保存存储,则只有entity1和businessEntity之间的关系存在
我在entity2和businessEntity之间没有任何关系
真奇怪
PS:我的两个实体是NSManagedObject的子类,用于未定义属性和瞬态属性
感谢您对apple文档的帮助 我读过这篇重要的文章: 重要提示:您必须定义 这两种情况下的多对多关系 方向也就是说,您必须指定 两种关系,每种关系都是 与另一个相反。你不能只是 在一个数据库中定义一对多关系 方向,并尝试将其用作 多对多。如果你这样做了,你就会结束 具有引用完整性 问题
现在是工作了哪个实体的哪个属性是暂时的?
个人性
和业务
实体之间的关系是相互的吗?我找到了一个解决方案。a已经添加了一个反向关系,现在可以了。反向关系是默认的,并且是假定的。事实上,如果没有互惠关系,Xcode将向您发出警告。是的,但我在启动此项目时已将MOMC_NO_reverse_RELATIONSHIP_警告添加为yes。这真的很愚蠢。嗯,这一定是Xcode4的“改进”之一。
- (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];
}