0

ステートメントを使用してNSManagedObjectを削除しています

[managedObjectContext deleteObject:obj];

その後、その永続ストアへの変更を保存しています。また、データベースビューアを使用して実際のテーブルを表示しようとすると、テーブル内にまだオブジェクトが残っていることがわかりました。私は混乱し、以下のように削除した後(永続ストアに保存する直前)に更新呼び出しを行いました。

[managedObjectContext refreshObject:obj mergeChanges:YES];

そして、今テーブルを見ようとすると、オブジェクトが見えませんでした。現在は機能していますが、2つの理由で混乱しています。

1:永続ストアに保存していますが、他の多くの場所で多くのオブジェクトを削除しており、どこでも更新を行っていません。

2:すでに削除されたオブジェクトを更新するという概念がわかりません。

誰かが私を助けることができますか?前もって感謝します!

4

1 に答える 1

2

もう少し文脈がないと答えるのは簡単ではありません。

つまり、管理対象オブジェクトを削除すると、同じ managedobjectContext で作成されていない限り、fetchedResultsController は更新されません。つまり、2 つの異なるマネージド コンテキストから発行された 2 つのデータベース フェッチでは、データベースの状態が同期されていません。

そうでないかどうかを確認することをお勧めします。

また、非常に特殊な場合を除いて、更新を実行する必要はありません。NSFetchedResultsControllerDelegate プロトコルを実装していれば、データベースの変更が NSFetchresultController に通知されます。

于 2012-12-01T21:06:09.267 に答える