如何正确地将.SQLite添加到App的包中?

时间:2017-03-21 05:38:52

标签: ios sqlite core-data

本教程告诉我,我需要将3个文件(在WAL模式下)扔到包中。

https://www.appcoda.com/core-data-preload-sqlite-database/

我的应用程序使用DELETE WAL模式,那里只存在1个文件(仅限.sqlite)。

我只测试并将1个文件(.sqlite)扔到捆绑包中。 然后编写方法将其复制到App的Document目录。 它工作:o,文件复制完美。

但我仍然想知道1文件模式是否会在以后崩溃我的应用程序? 我应该切换到“3档”模式(WAL模式)而不是???

更新***

嗨非常感谢,我只是将.sqlite文件完全复制到NSBundle。但是在我将文件从Bundle复制到Document目录之后。我的PSC无法读取.sqlite(认为ps完全添加到psc,由[psc persistentStores]检查。提取的数据仍然是空的(我以为我可以看到数据存在于.sqlite中来自DBBrowser)。我一遍又一遍地试过这个仍然无效(更改文件名/等)。

我的PSC选项是这样的。我不知道这是原因???谢谢

 @{    NSSQLitePragmasOption : @{@"journal_mode":@"DELETE"},
                     NSInferMappingModelAutomaticallyOption: @YES,
                      NSMigratePersistentStoresAutomaticallyOption :   @YES };    

1 个答案:

答案 0 :(得分:0)

我认为你的意思是

  

删除WAL模式

是您的数据库处于DELETE日记模式。

正如SQLite文档所述:

  

DELETE日记记录模式是正常行为。在DELETE模式下,在每个事务结束时删除回滚日志。实际上,删除操作是导致事务提交的操作。

对共享内存文件进行控制时,它表示仅使用

  

在WAL模式下操作[...]

因此,如果最后一次连接到DB已正确关闭,那么您应该没问题。 如果您仍然担心,您还可以通过运行

来验证数据库的完整性
    PRAGMA integrity_check

    PRAGMA quick_check

就可以了。