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

时间:2014-02-19 22:29:22

标签: ios sqlite core-data

我有一个应用程序,通过从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:我没有提出断点,让应用程序正常完成(优雅地),然后转到构建文件夹,db文件有数据,当我将其复制并粘贴到桌面时,它仍然保留数据。

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

1 个答案:

答案 0 :(得分:3)

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

Core Data and iOS 7: Different behavior of persistent store