将NSManagedObjectContext与后台线程更改合并的问题

时间:2012-12-13 15:51:37

标签: objective-c ios multithreading core-data nsmanagedobjectcontext

我的数据应该从后台更改。 有一种方法可以在后台工作,并在新的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

当我对主线程中的主要上下文进行相同的更改时,一切正常。我之前有过从后台线程合并的成功经验,但这种情况让我发疯,所以我在寻求帮助。

感谢名单。

1 个答案:

答案 0 :(得分:0)

IIRC如果在合并后保存主要上下文,则获取的结果控制器仅获取更新通知。