我是否需要启用WAL模式将.SQLite从包复制到Document目录?

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

当我执行一个获取请求时,执行没有错误,BOOL(成功)是1。 但是返回的数组总是EMPTY。

Core Data Basics: Preload Data and Use Existing SQLite Database

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

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

假设你的意思是日记模式,而不是WAL MODE (你的意思是Xcode 8.x,因为Xcode 10还不存在),否则你不需要复制任何额外的文件或改变模式。 将日记模式设置为DELETE ,只有一个文件。 您不需要创build额外的文件来进行复制工作。

但是还有其他一些问题,你应该检查一下,如果有必要的话,还可以附加一些问题:

  • 也许复制阶段实际上并不像你想的那样完美。
  • 也许你并没有将SQLite文件添加到持久存储协调器中 – 所以在执行提取时它不可用。
  • 也许你的读取configuration错误,并试图获取不存在的数据。

至于你的问题,不,你不需要复制其他文件,或更改日记模式强制其他文件存在。