0
上下文設置:兒童(專用隊列) - >父(主隊列) - >持久性存儲協調員核心數據親子語境競爭條件
救了我的孩子上下文時大約有50%的時間,我的父/主上下文無法識別更改,因此永遠不會保存到持久存儲區。
func saveContext(context: NSManagedObjectContext, childThread: Bool) {
if context.hasChanges {
do {
try context.save()
print("saved on mainThread: \(!childThread)!")
} catch {
//...
}
if context.parentContext != nil { // private context
dispatch_async(dispatch_get_main_queue(), {
print("preparing to save main context")
self.saveContext(context.parentContext!, childThread: false)
})
}
} else {
print("no changes seen")
}
}
換句話說,之後我成功救上孩子方面,我saveContext方法準備保存上下文在主線程,只有約50%的時間,失敗,並打印出「無變動看到「。
context.save()是異步執行的嗎?我是否需要使用類似上下文保存的通知? (我認爲這對親子設置沒有必要。)
這是在調用saveContext之前完成的。 – anders32