【问题标题】:strange relationship to nsmanagedObject与 nsmanagedObject 的奇怪关系
【发布时间】: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 的子类,用于未定义的属性和瞬态属性。

感谢您的帮助

【问题讨论】:

  • 哪个实体的哪个属性是瞬态的? PersonEntityBusiness实体之间的关系是互惠的吗?
  • 我找到了解决方案。已经添加了反向关系,现在可以了。
  • 反向关系是默认的并且是假定的。事实上,如果没有互惠关系,Xcode 会警告你。
  • 是的,但是当我开始这个项目时,我已经添加了切换 MOMC_NO_INVERSE_RELATIONSHIP_WARNINGSYES。真是愚蠢。
  • 嗯,一定是Xcode4中的“改进”之一。

标签: core-data relationship nsmanagedobject


【解决方案1】:

关于苹果文档Core Data Programming Guide

我已经阅读了这段重要的文字:

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

现在可以了

【讨论】:

    猜你喜欢
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2013-09-03
    相关资源
    最近更新 更多