在将核心数据并发调试标记设置为1的同时调试其他问题时,引起我注意的是,框架在上下文保存期间引发了一些异常。
我正在使用的应用程序大量使用后台线程和私有队列上下文来从套接字获取数据并在后台执行繁重的任务。
问题是,当我运行没有-com.apple.CoreData.ConcurrencyDebug 1
环境变量的应用程序时,我没有从try context.save()
例如,我设置了-com.apple.CoreData.ConcurrencyDebug 1
,然后执行了一项操作并将其保存并保存。
do {
try context.save()
} catch {
log.error("Delete error: \(error)")
}
我在optimistic lock failure
上遇到了try context.save()
异常
然后我继续将应用返回到触发异常的相同状态,并在没有-com.apple.CoreData.ConcurrencyDebug 1
的情况下运行 并设置断点
do {
try context.save()
} catch {
log.error("Delete error: \(error)") // <--- breakpoint here
}
与我过去遇到的其他问题不同,没有任何错误。我没有任何有关锁定原因的信息。可能有很多事情出了问题,但我无法把握这次机会弄错了哪一个。
我已经在Google上进行了广泛的搜索,关于如何从乐观锁异常中获取有意义的信息的信息并没有太多细节。
答案 0 :(得分:0)
使用NSPersistentContainer时,将所有T交叉:
self.managedObjectContext
。