与nsmanagedObject的奇怪关系

时间:2011-05-03 11:36:24

标签: core-data relationship nsmanagedobject

我有来自同一实体的多个NSmanagedObject(我们称之为PersonEntity)。

此实体与另一个实体(我们称之为BusinessEntity)之间存在“to-many”关系。

当我填充我的商店时,我创建了BusinessEntity managedObject。 我将此BusinessEntity托管对象添加到我的第一个PersonEntity托管对象。

[(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之间的relationShip。

我与entity2和businessEntity没有任何关系。

真奇怪

PS:我的两个实体是NSManagedObject的子类,用于未定义属性和瞬态属性。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在苹果文档Core Data Programming Guide

我读过这个重要的文字:

  

重要提示:您必须定义   两者中的多对多关系   方向 - 也就是说,您必须指定   两个关系,每个都是   另一个的倒数。你不能只是   在一个中定义一个到多个关系   方向,并尝试将其用作   许多到很多。如果你这样做,你将结束   引用完整性   问题。

现在它的工作