本教程告诉我,我需要将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 };
答案 0 :(得分:0)
我认为你的意思是
删除WAL模式
是您的数据库处于DELETE日记模式。
正如SQLite文档所述:
DELETE日记记录模式是正常行为。在DELETE模式下,在每个事务结束时删除回滚日志。实际上,删除操作是导致事务提交的操作。
对共享内存文件进行控制时,它表示仅使用
在WAL模式下操作[...]
因此,如果最后一次连接到DB已正确关闭,那么您应该没问题。 如果您仍然担心,您还可以通过运行
来验证数据库的完整性 PRAGMA integrity_check
或
PRAGMA quick_check
就可以了。