应用程序终止时如何消除核心数据sqlite警告消息?

时间:2017-12-30 22:49:21

标签: swift macos sqlite cocoa core-data

自升级到High Sierra以来,当我的核心数据应用程序终止时,我一直收到这些警告:

  

libsqlite3.dylib客户端中的BUK:数据库完整性受到破坏   API违规:vnode在使用时取消链接

我还没有看到任何实际问题,但我想知道是否应该在applicationShouldTerminate()中添加一些拆卸代码?

目前我所做的就是在返回.terminateNow之前保存上下文。

1 个答案:

答案 0 :(得分:3)

好的,我明白了。由于我的持久存储包含敏感数据,因此我在加密磁盘上的文件作为关闭之前的最后一步。但是,Core Data堆栈在关闭过程中此时仍然引用它们。

解决方案是在运行代码加密文件之前添加代码以删除持久存储。

    for store in managedObjectContext!.persistentStoreCoordinator!.persistentStores {
        try! managedObjectContext!.persistentStoreCoordinator!.remove(store)
    }