具有新的预写日志(WAL)日记功能的预填充核心数据SQL存储

时间:2013-11-03 22:13:42

标签: ios sql sqlite core-data journaling

我想用SQL数据存储区运送我的应用程序,但是现在,因为Apple已经引入了WAL日记功能,这使得3个文件而不是一个,所以我想知道我是否应该发送所有3个文件,或者我可以尝试强制SQL创建一个检查点,将它们全部合并到一个.sql文件中。

我真的很想使用这个新的iOS 7功能,所以回到滚动日记对我来说不是一种方式。

2 个答案:

答案 0 :(得分:3)

要强制SQLite创建检查点,请执行PRAGMA wal_checkpoint

或者,使用journal_mode = DELETE发送数据库,并在安装文件后更改模式。

在任何情况下,只发送所有文件都没有问题。 (-shm文件不包含永久数据,可以忽略。)

答案 1 :(得分:2)

您不必使用WAL,这只是默认设置。您可以切换到其他模式。添加持久性存储时,将options参数设置为

NSDictionary *options = @{ @"journal_mode": @"DELETE" };

然后,您将获得与早期版本的iOS相同的日记行为。在创建预先填充的数据存储时使用此选项,您无需处理额外的日志文件。