1

我有两个对象 Contact 和 DealContact ,它们具有一对多和反向关系集。我在 DealContact 上有 Core Data 生成的访问器,称为removeContactsObject。DealContact 与称为联系人的联系人之间存在多对多关系。当我这样做时:

[dealContact removeContactsObject:oneContact];

在我保存或执行任何其他操作之前,它会导致 dealContact 对象变为 null。我还尝试了以下方法:

NSSet *contactSet = [dealContact mutableSetValueForKey:@"contacts"];
[contactSet removeObject:oneContact];
[dealContact setContacts:contactSet];

没有成功。dealContact 对象在任一操作后变为空。如何从关系中删除联系人对象(而不是删除)。

4

1 回答 1

0

假设您没有使用 ARC。您可能只需要retain在删除之前向联系人对象发送一条消息。当对象从集合中移除时,它将被释放,managedObjectContext 默认不保留它的注册对象,因此集合可能是唯一持有它的对象。例如

[dealContact retain];
[dealContact removeContactsObject:oneContact];
//.... add to new relationship
[dealContact release];
于 2012-07-14T12:32:31.033 回答