iOS、CoreData、SQLite、文件丢失数据

iOS、CoreData、SQLite、文件丢失数据,ios,sqlite,core-data,Ios,Sqlite,Core Data,我有一个应用程序,它通过将json文件导入sqlitedb来生成一些静态数据,当运行该应用程序时,DB文件中包含数据并正确加载,我通常转到“通常在”下的“构建文件夹” /Library/Application Support/iPhone Simulator/7.0.3-64/Applications/ 并检查sqlite文件并验证它是否有数据。 现在我复制同一个文件夹并将其粘贴到桌面上,然后在同一个sqlite浏览器中打开,数据就消失了??为什么我不知道!! 我注意到,对于每个sqlit

我有一个应用程序,它通过将json文件导入sqlitedb来生成一些静态数据,当运行该应用程序时,DB文件中包含数据并正确加载,我通常转到“通常在”下的“构建文件夹”

  /Library/Application Support/iPhone Simulator/7.0.3-64/Applications/
并检查sqlite文件并验证它是否有数据。 现在我复制同一个文件夹并将其粘贴到桌面上,然后在同一个sqlite浏览器中打开,数据就消失了??为什么我不知道!! 我注意到,对于每个sqlite文件,都会生成一个-shm和-wal文件

为什么会这样

好的,所以我尝试了更多的调查,我有两种情况:

1:我在完成生成SQLite文件后放置了一个断点,然后转到build文件夹,在build文件夹中DB有数据,如果我将该文件复制到桌面,DB将丢失其数据

2:我没有设置断点,让应用程序正常(优雅地)完成,然后转到build文件夹,db文件有数据,当我复制并粘贴到桌面时,它仍然保留数据


因此,我假设当xcode退出(或应用程序正常关闭)时,当我放置断点时,会发生一些我忽略的事情!!

从iOS 7开始,默认情况下,sqlite数据库在日志记录模式下使用-这意味着对数据库的所有更改都写入“更新文件”,而不是直接连接到数据库。您可以将行为更改回“旧”方式-查看此处以获得完整的解释 :