Objective c 可可触感&x2013;核心数据更新多对多关系

Objective c 可可触感&x2013;核心数据更新多对多关系,objective-c,cocoa-touch,core-data,relationship,Objective C,Cocoa Touch,Core Data,Relationship,我有两个实体,一个叫做组,另一个叫做联系人。他们有一个多对多的关系(至少有一个)。因此,至少一个联系人可以属于一个或多个组,并且至少一个组可以属于一个或多个联系人 Contact <<-->> Group 触点A应保持完好 这意味着应将联系人B关系从组中删除(也应从联系人实体中删除,因为没有其他组与联系人B有关系) 应创建联系人C 我将如何处理这种情况?我不能让它工作 您是否为核心数据模型生成了模型类?如果是这样,您应该在组类中创建如下所示的CoreDataGenera

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

Contact <<-->> Group
触点A
应保持完好

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

应创建联系人C


我将如何处理这种情况?我不能让它工作

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

- (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

是的,我已经生成了模型类。因此,我看到您的代码正在编辑特定的组,但我没有看到任何与从联系人实体中完全删除
ContactB
相关的内容?鉴于联系人是多对多的,我不知道您想要完全删除该联系人(鉴于其他组可能与之相关)。只需从managedobjectcontext中删除该对象即可。
Group *group = ...
Contact *contactB = ...
Contact *contactC = ...
Contact *contactD = ...
[group addContactObject:contactD];
[group removeContactObject:contactB];
[group removeContactObject:contactC];
//save your context