2012-01-30 135 views
0

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

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

您是否为核心数据模型生成模型类?如果是这样,你应该已经创建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 
+0

是的,我已经生成的模型类。所以我看到你的代码正在编辑特定的组,但是我没有看到任何与从Contact实体中完全删除“ContactB”有关的东西? – 2012-01-30 14:05:05

+0

鉴于这是很多很多,我不知道你想完全删除该联系人(鉴于其他组可能与它有关)。只需从managedobjectcontext中删除该对象即可。 – shawnwall 2012-01-30 15:23:51