0

我有两个NSManagedObjectContext的,一个是用于从在后台API响应写数据,和另一种是填充NSFetchedResultsController如下:如何将未保存的NSManagedObjectContext从一个上下文更改为另一个上下文?

// moc used to fetch objects via NSFetchedResultsController: 

    moc = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType) 
      moc.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy 


// moc used when writing data from an api response: 

    backgroundMoc = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType) 
      moc.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy 

但是也有一些暂时存储中的对象后台moc(没有调用.save()),我需要将这些更改合并到主moc中,以便我的NSFetchedResultsController可以访问它。

我试过订阅NSManagedObjectContextDidSaveNotification,但只有当我打电话backgroundMoc.save()时,我才试图避免,因为我的backgroundMoc中的对象有未保存的更改。

这样做的最佳方法是什么?

回答

0

这里没有内置的机制。当您在一个上下文中有未保存的更改时,这些更改仅存在于该上下文中。其他上下文无法看到它们,因此它们无法获取它们包含的信息。如果您不想保存更改,则唯一的选择是在其他上下文中再次进行相同的更改。也就是说,无论你在上下文A中做了什么,都要在上下文B中再次执行,以便它具有相同的更改。

相关问题