0

バックグラウンドから変更する必要のあるデータがあります。バックグラウンドで動作し、新しいを初期化し、NSManagedObjectContext変更を加え、保存を呼び出すメソッドがあります。次にNSManagedObjectContextDidSaveNotification、通知オブジェクトに正しいデータが含まれています。次に電話します

[mainManagedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
                                           withObject:notification 
                                        waitUntilDone:YES];

しかし、私の中ではUITableViewController何も変わっておらず、私は入りません

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller

また

- (void)controller:(NSFetchedResultsController *)controller 
   didChangeObject:(id)anObject 
       atIndexPath:(NSIndexPath *)indexPath 
     forChangeType:(NSFetchedResultsChangeType)type 
      newIndexPath:(NSIndexPath *)newIndexPath

メインスレッドのメインコンテキストに同じ変更を加えると、すべてが正常に機能します。私は以前にバックグラウンドスレッドからのマージに成功した経験がありますが、この状況は私を夢中にさせるので、助けを求めています。

ありがとう。

4

1 に答える 1

0

IIRC フェッチされた結果コントローラーは、マージ後にメイン コンテキストを保存した場合にのみ更新通知を受け取ります。

于 2012-12-13T18:20:08.583 に答える