添加到多个/多对多核心数据关系

时间:2012-04-05 14:37:37

标签: cocoa core-data tags nsarraycontroller

我有2个实体,通过多对多关系相关。

Thing<<->>Tag

有一个NSArrayController控制实体“Tag”,绑定到managedObjectContext。通过数组控制器添加:和remove:action我可以将标签实例添加到集合中。

还有第二个控制“Thing”实体的NSArrayController,它们也绑定到managedObjectContext。

因此,每个控制器都管理其实体的所有实例。

现在,假设阵列控制器已经创建了5个“tag”和3个“thing”实例 我想将单个标签链接到一个东西。我只想创建现有事物与现有标记实例之间的关系。

  • NSArrayController的addObject:是正确的方法吗?或者它是否创建了一个新的托管对象?

  • 是否等同于:

    NSMutableSet *tags = [aThing mutableSetValueForKey:@"tags"];
    [tags addObject:existingTag];
    

  • 标记系统是否有一些最佳实践?

1 个答案:

答案 0 :(得分:1)

我发现在(在最新版本的Xcode中)选择核心数据建模器中的实体是有帮助的,然后转到文件菜单,然后选择新文件 - &gt;核心数据 - &gt; NSManagedObject子类。它会自动创建一个具有必要成员的类以及用于在toMany关系中添加对象的ALSO方法。

如果您已经这样做了,那么您只需要获得要添加thing的{​​{1}}实例,并且可以调用为您声明的方法。从生成的头文件中可以明显看出该方法的命名方式。