我正在使用兩個MOC,一個用於主線程,另一個MOC用於後臺線程。 在主線程上,我有一個UITableView與FRC(NSFetchedResultsController)一起工作。CoreData在從後臺保存操作期間無法完成故障MOC
偶爾我運行一次大規模的保存操作,刪除所有對象並建立幾百個新對象...此時我想在主線程中使用UITableView刷新其數據(使用FRC明顯)。因此,主MOC註冊到NSManagedObjectContextDidSaveNotification通知(從後臺MOC收到)並在該階段運行mergeChangesFromContextDidSaveNotification以確保UITableView相應地更新。
這一切都正常工作,直到我試圖在保存操作中滾動UITableView。當我嘗試滾動視圖時,「coredata無法完成錯誤」引發異常。這是FRC仍然保留已刪除對象的結果(在主MOC上收到來自NSManagedObjectContextDidSaveNotification通知的mergeChangesFromContextDidSaveNotification之前,保存操作仍在運行)。 這是收到mergeChangesFromContextDidSaveNotification後,保存操作和UITableView更新之間的某種「競爭條件」。
與這兩個MOC合作並照顧FRC的正確方法是什麼?因此它能夠應對這種情況?
謝謝。我讀過這篇文章......考慮到我描述的「丟棄這個對象」的架構和場景,最好的方法是什麼? – Joel