1

対多で逆の関係が設定された Contact と DealContact の 2 つのオブジェクトがあります。私は Core Data によって生成された DealContact のremoveContactsObjectというアクセサを持っています。DealContact には、contacts と呼ばれる Contact と多対多の関係があります。私がこれを行うとき:

[dealContact removeContactsObject:oneContact];

保存または他の操作を実行する前に、dealContact オブジェクトが null になります。私も次のことを試みました:

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

成功しませんでした。いずれかの操作の後、dealContact オブジェクトは null になります。リレーションシップから連絡先オブジェクトを削除するにはどうすればよいですか (削除ではありません)。

4

1 に答える 1

0

ARCを使用していないと仮定します。retain連絡先オブジェクトを削除する前に、単にメッセージを送信する必要がある場合があります。オブジェクトがセットから削除されると、オブジェクトは解放されます。デフォルトでは、managedObjectContext は登録済みのオブジェクトを保持しないため、セットが保持されている唯一のオブジェクトである可能性があります。例えば

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