私はこの質問について頭がおかしくなっています。
そのため、iOS アプリで Core Data を次のようにセットアップしました: http://www.cocoanetics.com/2012/07/multi-context-coredata/
次に、一時的な MOC を作成してオブジェクトを挿入し (ブログ投稿で説明されているように)、performBlock: メソッドで 3 つのコンテキストすべてに対して保存を実行します。
ビューコントローラーには があり、NSFetchedResultsController
実際に新しいオブジェクトを挿入したことが通知されます。問題は、NSFetchedResultsChangeInsert
が 2 回起動され、通過するたびにオブジェクトが異なるobjectID
(メモリ内の異なるオブジェクト インスタンスでもある) ことです。何が起こるかというと、テーブル ビューに 2 つの行が挿入されていますが、SQL データベースには新しい行が 1 つしかありません。もちろん、テーブルビューの一番下までスクロールするとクラッシュします。
オブジェクトに対していくつかの更新も実行するNSFetchedResultsChangeUpdate
と、1 回だけ呼び出され、2 回目の呼び出しで渡された objectID が使用されNSFetchedResultsChangeInsert
ます。
最初の ID は次のようになります。
<x-coredata:///ReceivedMessage/t605BB9A7-A04E-4B89-B568-65B12E8C259A2>
2 番目 (および後続のすべてのもの) は次のようになります。
<x-coredata://02A917C5-850F-4C67-B8E4-1C5790CF3919/ReceivedMessage/p28>
これは何ですか?明らかな何かを見逃していますか?
PS:通知が同じコンテキスト、スレッドなどから来ているかどうかも確認しました。そうです。