1

私はNSFetchedResultsControllerDelegateのTableViewControllerを持っています。このテーブルが表示しているデータは別のコンテキスト(RestKit)で更新され、通知時にマージされます。この時点で、メインスレッドのManagedObjectContextでクエリを実行すると、他のスレッドによって更新されたデータが表示されます。NSFetchedResultsController別のコンテキストからの変更をマージした後でテーブルセルを更新するために退出する

コンテキストのマージが発生すると、NSFetchedResultsControllerDelegateであるTableViewControllerはcontroller:didChangeObject:atIndexPath:forChangeType:newIndexPathメッセージを取得します。私が持っている問題は、オブジェクト(didChangeObject)は、まだ古いデータを持っているということです。私はこのメッセージを呼んでいるものは、現在そのオブジェクトを私に与えるために現在のNSFetchResultsControllerを使用しているので、これはそうだと思います。

NSFetchResultsControllerのfetchObjectがコンテキストマージから更新されなかったのはなぜですか?コンテキストマージによってfetchObjectsを更新してこのフェッチをもう一度実行する方法はありますか?

答えて

4

答えは、NSManagedObjectのデータが間違っているとマークしました。デフォルトでは、staleness intervalは無限に設定されています。私はこの情報を見つけた場所に信用を与えるが、今はそれを見つけることができない。とにかくNSManageObjectContextをそうするように設定すると、そのコンテキストは更新された情報をすぐに見ることができます。

[__managedObjectContext setStalenessInterval:0]; 
関連する問題