iOS,CoreData,SQLite,文件丢失其数据

我有一个应用程序,通过从json文件导入sqlitedb生成一些静态数据,运行应用程序时,DB文件中包含数据并正确加载,我通常会转到build文件夹“

/Library/Application Support/iPhone Simulator/7.0.3-64/Applications/ 

并检查sqlite文件并validation它确实有数据。 现在我复制相同的文件夹并将其粘贴在桌面上,然后在同一个sqlite浏览器中打开它,数据就消失了? 为什么我不知道!! 我注意到,对于每个sqlite文件,都会生成一个-shm和-wal文件。

为什么会这样?

好的,所以我尝试了一点调查,我有两个场景:

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

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

所以我假设有一些事情发生在xcode退出(或应用正常关闭)时,我错过了当我放置一个断点!

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

核心数据和iOS 7:持久性存储的不同行为