核心数据 - 打破关系

Gar*_*tet 3 iphone xcode entity-relationship core-data objective-c

我有一个Patient实体和一个List实体.患者可以属于几个不同的列表,并且列表可以具有多个不同的患者.

假设我的病人属于3个名单(A,B,C).我想从列表A和B中删除患者.虽然很明显,我不想删除列表A和B. 我该怎么做呢?

Mar*_*rra 8

虽然蒂姆上面的回答在技术上是正确的,但对我来说似乎是相当多的代码.

我假设要从列表中删除患者,您已经知道该列表并在您想要移除患者时对其进行引用.因此,代码可以像下面这样简单:

id myPatient = ...;
id myList = ...;
[[myPatient mutableSetValueForKey:@"lists"] removeObject:myList];
Run Code Online (Sandbox Code Playgroud)

这当然是假设您的关系是双向的.如果他们不是那么我强烈建议你使他们双向.

最后,因为这是多对多关系,所以您可以在任一方向执行上述代码.

[[myList mutableSetValueForKey:@"patients"] removeObject:myPatient];
Run Code Online (Sandbox Code Playgroud)

更新

然后代码甚至更简单:

[myPatient setLists:nil];
Run Code Online (Sandbox Code Playgroud)

这将从所有列表中删除患者.