【问题标题】:Do i need to Enable WAL mode to copy .SQLite from bundle to Document directory?我是否需要启用 WAL 模式才能将 .SQLite 从捆绑包复制到文档目录?
【发布时间】:2017-03-24 23:30:33
【问题描述】:

我当前的应用程序只复制 .sqlite 文件 (WAL MODE = DELETE)。 一切顺利,新复制的 myfile.sqlite 也完美地包含了数据。

当我执行 fetch request 时,执行没有错误,并且 BOOL (success) 为 1 。但是返回的数组总是空的。

https://www.appcoda.com/core-data-preload-sqlite-database/

本教程告诉我需要将 3 个文件 (.sqlite , .sqlite-wal , .sqlite-shm) 复制到 Document 目录中。

这是否意味着我需要启用 WAL 模式并从头开始重新执行所有操作?在 Xcode 10 中,我们仍然不能只复制 1 个 .sqlite 文件?有人可以澄清一下吗?

【问题讨论】:

    标签: ios xcode core-data


    【解决方案1】:

    假设您的意思是日志模式,而不是 WAL MODE(并且您的意思是 Xcode 8.x,因为 Xcode 10 尚不存在),您不需要复制任何其他文件或更改模式。将日志模式设置为DELETE,只有一个文件。您无需创建额外的文件即可进行复制。

    但您可能还会遇到其他几个问题,您应该检查这些问题,并在必要时发布其他问题:

    • 也许复制阶段实际上并没有您想象的那么完美。
    • 也许您没有将 SQLite 文件添加到持久存储协调器中,因此在您进行提取时它不可用。
    • 可能您的提取配置有误,正在尝试提取不存在的数据。

    至于你的问题,不,你不需要复制其他文件,或者改变日志模式来强制那些其他文件存在。

    【讨论】:

    • 哇,非常感谢。现在我使用 1 文件模式(仅限 .sqlite)一切都很顺利。我可以将 .sqlite 从包复制到文档。并完美添加到 PSC。但是在获取时,我得到了一个空数据。这是由 NSInfermap = YES 或 NSMigratePSCAuto = YES 引起的??????非常感谢
    猜你喜欢
    • 2016-07-13
    • 2016-03-24
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多