Ios 多对多上的Core Data removeObject导致对象设置为空
我有两个对象接触和解除接触,一个是对多,一个是反向关系集。我在DealContact上生成了名为removeContactsObject的核心数据访问器。DealContact与许多名为contacts的联系人有关系。当我这样做时:Ios 多对多上的Core Data removeObject导致对象设置为空,ios,core-data,many-to-many,Ios,Core Data,Many To Many,我有两个对象接触和解除接触,一个是对多,一个是反向关系集。我在DealContact上生成了名为removeContactsObject的核心数据访问器。DealContact与许多名为contacts的联系人有关系。当我这样做时: [dealContact removeContactsObject:oneContact]; 它会导致dealContact对象在保存或执行任何其他操作之前变为null。我还尝试了以下几点: NSSet *contactSet = [dealContact mut
[dealContact removeContactsObject:oneContact];
它会导致dealContact对象在保存或执行任何其他操作之前变为null。我还尝试了以下几点:
NSSet *contactSet = [dealContact mutableSetValueForKey:@"contacts"];
[contactSet removeObject:oneContact];
[dealContact setContacts:contactSet];
没有成功。dealContact对象在任一操作后都变为null。如何从关系中删除联系人对象(而不是删除)。假设您不使用ARC。在删除联系人对象之前,您可能只需要向其发送一条
retain
消息。当对象从集合中移除时,它将被释放,默认情况下managedObjectContext不会保留其注册的对象,因此集合可能是唯一保留它的对象。e、 g
[dealContact retain];
[dealContact removeContactsObject:oneContact];
//.... add to new relationship
[dealContact release];
你是在使用mac osx还是ios?(添加任何一个标签都更有可能让你的问题变得清晰可见)。在iOS上工作。谢谢您对标签的建议,但我如何添加它们?我在任何地方都看不到编辑问题。为您添加了它:)将来,在问题标签的正下方会有一个“编辑”按钮。您可以单击该按钮编辑标记。希望有人能帮助你!您是使用ARC还是手动保持和释放?如果是后一种情况,您可能需要在删除它之前发送一条
retain
消息,否则在删除之后没有任何内容保留。我尝试了这个方法,但没有成功。我不想释放dealContact对象。我正在从dealContact中删除一个联系人,因此只更改保存联系人的集合。这不是保留问题,而是我没有将dealContact对象传递到另一个正在运行removeContactsObject调用的屏幕。谢谢你的指点。