好吧我有一個非常棘手的問題,我花了幾天的時間去了解並知道我不知道如何解決它。防止NSManagedObjectContextDidSaveNotification事件重疊
我有一個CoreData數據庫從不同上下文的不同線程更新。我的問題是,有時NSManagedObjectContextDidSaveNotification事件重疊並創建導致崩潰的基礎的損壞。這裏有一個例子:
Thread Main NSFetchResultsController
Update database
Save database NSManagedObjectContextDidSaveNotification1
merge delegate process 1
process 1 done
Update database
Save database NSManagedObjectContextDidSaveNotification2
merge delegate process 2
process 2 done
Update database
Save database NSManagedObjectContextDidSaveNotification3
merge delegate process 3
Update database
Save database NSManagedObjectContextDidSaveNotification4
merge
process 3 done
delegate process 4
CRASH
process 4 done
在這個僞代碼示例過程1和過程2工作沒有問題 但有時候主線程接收重疊的更新事件和 你process4開始process3完成之前讀取數據庫。
有沒有官方的方式來處理? CoreData是否爲這種情況提供了一個解決方案 ,還是我必須使用NSLock?
感謝
你可以發佈處理合並通知的代碼部分嗎?沒有這一點,我不認爲有更多的人能夠推斷出來。正如我在回答中所說的,上下文鎖定持久性商店協調員以序列化訪問,這應該可以防止這些類型的問題。 – paulbailey 2011-02-03 18:08:02