Cocoa-Touch - 核心数据更新多对多关系

时间:2012-01-30 12:20:23

标签: objective-c cocoa-touch core-data relationship

我有两个实体,一个叫Group,另一个叫Contact。他们有多对多的关系(至少有一个)。因此,至少一个联系人可以属于一个或多个组,并且至少一个组可以属于一个或多个联系人。

Contact <<-->> Group

现在,当我想要更新我的视图控制器中的组时,我的子类NSManagedObject Group可用。 (@property (nonatomic, strong) Group *selectedGroup;

假设最初的群组与3个联系人有关系,在我更新该群组后,它应该有2个联系人(1个原始联系人和1个新联系人)。

Before update    After Update
Group            Group
-----            -----
ContactA         ContactA
ContactB         ContactD
ContactC

ContactA应保持完整。

这意味着应该从组中删除ContactB关系(也应该从联系人实体中删除,因为没有其他组与ContactB有关系)

ContactC应该被创建。

我该如何处理这种情况?我无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

您是否为核心数据模型生成了模型类?如果是这样,您应该在Group类中创建如下所示的CoreDataGeneratedAccessors:

- (void)addContactObject:(Contact *)value;
- (void)removeContactObject:(Contact *)value;

然后您可以执行以下操作:

Group *group = ...
Contact *contactB = ...
Contact *contactC = ...
Contact *contactD = ...
[group addContactObject:contactD];
[group removeContactObject:contactB];
[group removeContactObject:contactC];
//save your context