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

标签 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

最佳答案

虽然您仍然可能想要重新考虑整体备份策略,但您可以考虑做的一件事是直接使用 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/

相关文章:

ios - 红色录音条扭曲 View

objective-c - 从单独的类中退出第一响应者

ios - 新版本如何防止核心数据问题

iphone - iOS - 打开手机上存在的另一个应用程序?

c++ - 在Swift项目中使用C++文件时包含错误的 header

objective-c - SQLite 不编译查询 - Objective C

database - 如何在 Flutter Floor 中实际查看数据库?

Android SQLiteDatabase - 存储和比较大数

ios - CollectionView sizeForItemAtIndexPath 从未调用过

ios - 错误 : Plugin 'EmailComposer' not found, 或不是 CDVPlugin。检查 config.xml 中的插件映射