NSFetchedResultsController に問題があります。これは、IncludesPendingChanges をオンにすることで修正されるようです。これが心配です。(保留中の変更が役に立たないことを含め、これは真実ではないことがわかりました。)
Fetched Results Controller は、完全な API リフレッシュでオブジェクトを正しくフェッチして表示します。段階を踏んで、この完全な API 更新の一時的なコンテキストが保存され、エラーなしでマージされることを確認しました。
ただし、別のナビゲーション フローから同じフェッチ リクエストを実行するビューに戻ると、オブジェクトの完全なセットではなく、部分的に完成したオブジェクトが 1 つだけ返されて表示されます。この時点で完全な API 更新を行うと、更新によって正しいオブジェクトが表示されます。
私の問題は、mergeChangesFromContextDidSaveNotification がメイン コンテキストに伝播されていない可能性があると考えていますが、ログとステップスルーから、正しく保存されているようです。ここからどこへ行けばいいのかわからない。includesPendingChanges で症状は修正されますが、根本的な問題が修正されるとは思えません。
追加情報として、コア データ管理にこのフレームワークを使用しています: https://github.com/vokalinteractive/CoreDataManager-iOS
VIFetchedResultsController.m の 156 行目に追加して、includesPendingChanges を有効にしています。
[fetchRequest setIncludesPendingChanges:YES]
編集どのようなまぐれでも、includesPendingChanges を YES に修正すると、問題はもはや存在しないと私が信じるようになりました。このプロジェクトには非常に毛むくじゃらのメモリ管理が含まれていたことが判明しました。一日中それを片付けた後でも、私はまだこの作業を行うにはほど遠い状態です。それでも同じ時点で、変更がメイン データストアに反映されていないか、保持されていないようです。
ヒントとして、以下のコメントで述べたように、「includePendingChanges:YES」を指定した場合でも、フェッチしたオブジェクトを次のようにログアウトします。
[self.fetchedResultsController.fetchedObjects description]
「includesPendingChanges: NO」で終わります。何がこれを引き起こす可能性がありますか?