自升级到High Sierra以来,当我的核心数据应用程序终止时,我一直收到这些警告:
libsqlite3.dylib客户端中的BUK:数据库完整性受到破坏 API违规:vnode在使用时取消链接
我还没有看到任何实际问题,但我想知道是否应该在applicationShouldTerminate()中添加一些拆卸代码?
目前我所做的就是在返回.terminateNow之前保存上下文。
答案 0 :(得分:3)
好的,我明白了。由于我的持久存储包含敏感数据,因此我在加密磁盘上的文件作为关闭之前的最后一步。但是,Core Data堆栈在关闭过程中此时仍然引用它们。
解决方案是在运行代码加密文件之前添加代码以删除持久存储。
for store in managedObjectContext!.persistentStoreCoordinator!.persistentStores {
try! managedObjectContext!.persistentStoreCoordinator!.remove(store)
}