目前的解决方案和问题: 我当前在创建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
答案 0 :(得分:0)
虽然您可能仍想重新考虑整体的备份策略,但您可以看到的一件事是直接使用Sqlite API连接到作为核心数据后备存储的.sqlite文件,并将数据导出到备份。磁盘上的sqlite文件。这与sqlite .dump命令的用法非常相似。
以前曾提出类似的建议: https://stackoverflow.com/a/27453637
可以在此处找到要查看的相关SQLite API:https://www.sqlite.org/c3ref/backup_finish.html