Core Data WAL模式不会持久更改.db,只有.db-wal和.db-shm

时间:2013-09-07 19:39:08

标签: ios cocoa-touch sqlite core-data magicalrecord

所以,我一直在使用MagicalRecord开发iPad应用程序,最近在搬到自动迁移商店后,我遇到了一些问题。我需要将我的.db文件从一个设备同步到另一个设备,所以我需要所有数据都在.db中,但似乎启用了WAL日记模式(Magical Record自动迁移存储的默认值)no无论我如何保存它只会将更改持久保存到.db-wal或.db-shm文件。我切换到正常的sqlite商店,一切正常。因此,我的问题是,在启用WAL日记功能的情况下,我是否需要执行任何特殊操作才能将Core Data保存到主数据库,或者我只需要禁用它?

2 个答案:

答案 0 :(得分:4)

更改日记帐模式。毕竟,你有Magical Record source。将SQLite日记帐模式更改为DELETE,并在每次交易后删除日记帐模式。禁用日志记录是一个非常糟糕的主意,不要这样做。但是使用不同的模式应该没问题。

一旦持久性存储打开,Core Data不提供任何用于操作日志的API。 SQLite是一个实现细节,Core Data不公开内部SQLite细节。设置核心数据堆栈时,您可以获得最接近的options参数,您可以在此处更改日志模式(以及MR更改它的位置)。

答案 1 :(得分:0)

-wal文件是数据库的一部分;您必须将其与.db文件同步。

或者,您可以通过执行checkpoint将数据复制到主数据库文件。