当前的解决方案和问题: 目前,我在创建 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
最佳答案
虽然您仍然可能想要重新考虑整体备份策略,但您可以考虑做的一件事是直接使用 Sqlite API 连接到作为核心数据备份存储的 .sqlite 文件,然后将数据导出到备份。磁盘上的 sqlite 文件。这与 sqlite .dump 命令的用途非常相似。
之前已经提出过类似的建议: https://stackoverflow.com/a/27453637
可以在这里找到要查看的相关 SQLite API:https://www.sqlite.org/c3ref/backup_finish.html
关于ios - 如何以简单的方式备份没有搜索索引的 CoreData 存储 (SQLite)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29153379/