私は、別のNSManagedObjectと多対多の関係を持つNSManagedObjectを持っています。オブジェクトを削除するCoreDataGeneratedAccessorsが削除されていないようです
NSManagedObjectの作成中に、生成されたアクセサ 'removeNotesObject'を使用することができ、削除が正常に動作します。親オブジェクトに追加するオブジェクトを作成し、オブジェクトを保存し、オブジェクトを削除してから再度保存することができます。この親オブジェクトを取得すると、作成して削除したオブジェクトは削除されます。
ただし、オブジェクトを追加して保存した後(削除して保存しないでください)、オブジェクトをフェッチした後、以前に作成されたオブジェクトを削除できないようです。生成されたアクセサを使用してオブジェクトを削除しようとしていますが、これは動作するようですが、オブジェクトを再度フェッチするとオブジェクトは削除されません。
:私は、オブジェクトのセットを取得し、私が削除したいオブジェクトを選択したオブジェクトを削除するには
(注意、それは保存の問題ではありませんので、オブジェクトを追加する作業を行います)。次にオブジェクトを削除します
NSSet *notes = summary.notes;
NSSet *oldNotes = [notes objectsPassingTest:^(id obj,BOOL *stop){
Note *oldNote = (Note *)obj;
BOOL sameRow = (oldNote.row == newNote.row);
BOOL sameColumn = (oldNote.column == newNote.column);
BOOL success = (sameRow && sameColumn);
return success;}];
[summary removeNotes:oldNotes];
私はそれらを削除しなかったオブジェクトを削除するために逆の関係を作成しようとしました。私はまた別の削除ルール(カスケードと無効化)を試してみましたが、もう一度動作しませんでした。最後に、各オブジェクトを別々に削除し、親オブジェクトから削除した後に各オブジェクトをコンテキストから削除しようとしましたが、残念ながらそれが機能しませんでした。
問題はフェッチされたオブジェクトである必要があります。もし誰かがこの問題をテストしたり解決したりするための他の方法を考えることができないので、本当に感謝します。あなたは
NSManagedObjectContext * moc = .......;
[moc deleteObject:note]
編集を行う必要があり
ご提案いただきありがとうございます。私はオブジェクトを削除した後に 'deleteObject'を使ってみましたが、一時的にオブジェクトを削除している間に、オブジェクトを再フェッチした後に削除されません。削除ルールに関しては、私は現在削除ルールをカスケードとして設定しています。これはうまくいかず、無効化されません。 – Theo
どのように再フェッチしていますか? NSManagedObjectContextを保存する必要があります。 managedObjectContextを保存するまで、変更はディスクに保存されません。 – lorean
Yeh、私はオブジェクトと削除されたオブジェクトを同時に追加して保存したので、確実に保存しておきたいと思っていました。新しいオブジェクトは、オブジェクトを取得するときに追加されますが、他のオブジェクトは削除されません。 – Theo