如何以简单的方式备份没有搜索索引的CoreData存储(SQLite)?

时间:2015-03-19 19:31:37

标签: ios objective-c sqlite core-data

目前的解决方案和问题: 我当前在创建CoreData生成的SQLite数据库的备份时压缩了我的用户目录。但是,这也会备份冗余索引(这使得搜索速度更快)。 (在我的例子中,通过使用多个搜索索引转移到CoreData引入了大量冗余。数据量从大约3 MB增加到超过10 MB。)

我想要的是什么: 我想以存储有效的方式备份我的CoreData生成的SQLite数据库,即没有冗余搜索索引。还原备份时,应重新创建这些搜索索引。备份和恢复的整个过程应尽可能简单,即无需手动创建没有搜索索引的数据结构克隆。

我尝试了什么: 我已经阅读了Stackoverflow上有关备份CoreData和Apple文档的很多帖子。例如: migratePersistentStore。另外,我已经阅读了关于SQLite的文档,例如SQLite Online Backup API。但是,我没有找到任何选项来创建没有搜索索引的备份,并以重建搜索索引的方式还原此备份。

我的设置/选项:

  • 操作系统:iOS 8.2

  • 设备:iPhone 6 Plus

  • 商店选项:@{ NSMigratePersistentStoresAutomaticallyOption : @YES, NSInferMappingModelAutomaticallyOption : @YES, NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };

  • MOC选项:NSMainQueueConcurrencyType

1 个答案:

答案 0 :(得分:0)

虽然您可能仍想重新考虑整体的备份策略,但您可以看到的一件事是直接使用Sqlite API连接到作为核心数据后备存储的.sqlite文件,并将数据导出到备份。磁盘上的sqlite文件。这与sqlite .dump命令的用法非常相似。

以前曾提出类似的建议: https://stackoverflow.com/a/27453637

可以在此处找到要查看的相关SQLite API:https://www.sqlite.org/c3ref/backup_finish.html