「メイン」の NSManagedObjectContext に基づいて、UITableView を設定するように NSFetchedResultsController をセットアップしました。
タイマーでは、別の NSManagedObjectContext にオブジェクトを継続的に追加しますが、NSPersistantStoreCoordinator をメイン コンテキストと共有します。
NSManagedObjectContextWillSaveNotification 通知が送信されていることを確認できます。アプリを終了して再起動すると、前回の実行からのすべてのデータが取得されます。ただし、現在の NSFetchedResultsController は更新されません。
テスト プロジェクトを作成し、ここに配置しました。
(最初は、これは複数のスレッドが動作しているために発生していると思っていましたが、すべてが 1 つのスレッドで実行されたときに発生します)。
元の質問
「メイン」の NSManagedObjetContext に基づいて、UITableView を設定するように NSFetchedResultsController をセットアップしました。
バックグラウンド スレッドで、いくつかのオブジェクトを別の NSManagedObjectContext にダウンロードしてインポートしますが、その NSPersistantStoreCoordinator をメイン スレッドのコンテキストと共有します。
NSManagedObjectContextWillSaveNotification 通知を受け取るように登録しています。これらを取得したら、それらをメイン スレッドに転送し、メイン コンテキストに渡します。
デバッガーを使用して、これらが入ってくるのを監視し、それらが実際にコンテキストにオブジェクトを追加していることを確認できます。ただし、NSFetchedResultsController が更新されていません。これをすべてメインスレッドで行うと、うまくいきます。コントローラーで -performFetch: を呼び出すと、コントローラーが更新されるため、新しいオブジェクトが表示されないわけではないことがわかります。
これのほとんどは定型コードであり、異なるスレッドに分割されているだけです。