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中再次執行,以便它具有相同的更改。

相關問題