自从升级到 High Sierra 后,当我的核心数据应用程序终止时,我一直收到这些警告:
BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use
我没有看到任何实际问题,但我想知道是否应该在 applicationShouldTerminate() 中添加一些拆卸代码?
目前我所做的就是在返回 .terminateNow 之前保存上下文(如果它有更改)。
最佳答案
好的,我明白了。由于我的持久性存储包含敏感数据,因此我将加密磁盘上的文件作为关闭前的最后一步。但是,此时 Core Data 堆栈在关闭过程中仍在引用它们。
解决方案是在运行代码加密文件之前添加代码以删除持久存储。
for store in managedObjectContext!.persistentStoreCoordinator!.persistentStores {
try! managedObjectContext!.persistentStoreCoordinator!.remove(store)
}
关于swift - 应用程序终止时如何消除核心数据sqlite警告消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48038534/