【问题标题】:Adding to to-many / many-to-many core data relationship添加到多对多/多对多核心数据关系
【发布时间】:2012-04-05 14:37:36
【问题描述】:

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

Thing<<->>Tag

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

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

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

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

  • NSArrayController 的 addObject: 是正确的方法吗?还是它会创建一个新的 managedObject?

  • 是否等同于:

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

    ?

  • 标签系统有一些最佳实践吗?

【问题讨论】:

    标签: cocoa core-data tags nsarraycontroller


    【解决方案1】:

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

    如果您已经这样做了,那么您只需要获取您想要添加tagthing 实例,然后您可以调用为您声明的方法来执行此操作。从生成的头文件中可以看出该方法是如何命名的。

    【讨论】:

    • 非常感谢。那么这是否与使用带有 ist add: 方法的 NSArrayController 相同?
    • 向 NSArrayController 添加一个对象只会告诉 NSArrayController 这件事。如果您希望添加的对象在 UI 上可见,您需要这样做。另外,您需要将tag 添加到其thing 并将thing 添加到tag。这就是自动生成的添加方法的用武之地。
    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 2016-02-22
    • 2011-02-18
    • 2016-09-08
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多