【问题标题】:How to save the content of a MOC to a file, with no -wal and no -shm?如何在没有 -wal 和没有 -shm 的情况下将 MOC 的内容保存到文件中?
【发布时间】:2014-06-18 16:50:22
【问题描述】:

我想将MOC 的内容保存到文件myFile.ext。一切正常,我的数据保存到文件中,但我还必须保存辅助文件:

  • myFile.ext-wal
  • myFile.ext-shm

这些文件对于我的目的是否必要(将MOC 的内容保存到文件中)?我只想将我的数据“运送”在一个文件中。此外,当我再次获取数据时,我只使用myFile.extURL

如果没有必要,是否可以避免创建它们?

【问题讨论】:

    标签: sqlite cocoa core-data wal


    【解决方案1】:

    正如 CL 所指出的,它们在 WAL 模式下是必需的。要在创建持久存储时禁用日志模式,请传递流动选项。

    NSDictionary *options = @{NSSQLitePragmasOption: @{@"journal_mode": @"DELETE"};
    
    _coordinator = [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:options error:&storeError]; 
    

    当您再次运行您的应用程序时,-wal 应该会消失,并且 -shm 可以被删除或忽略。您所有的数据都应该在一个 sqlite 文件中。

    【讨论】:

    【解决方案2】:

    这些文件是在数据库位于WAL mode 时创建的(并且是必需的)。

    要禁用WAL模式,直接打开数据库,执行PRAGMA journal_mode = DELETE

    【讨论】:

    • 我不了解你,但即使使用 `journal_mode = DELETE",核心数据有时也会创建 WAL 和 SHM 文件。有人找到解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2014-11-07
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多