合奏和 journal_mode="DELETE"

Ensembles and journal_mode="DELETE"

我当前的 Core Data 堆栈配置 journal_mode="DELETE" 如下:

NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @YES,
                          NSInferMappingModelAutomaticallyOption: @YES,
                          NSSQLitePragmasOption: @{@"journal_mode": @"DELETE"}};
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
    // Handle error 
}

此代码强制核心数据创建单个 sqlite 文件(而不是 WAL 模式下的 3 个不同文件),这让我的生活更轻松 在备份和恢复 sqlite 数据库到用户的 Dropbox 时。 (我只需要备份或恢复一个文件,而不是三个)

当我添加 Ensembles 代码时,它似乎覆盖了 NSSQLitePragmasOption 并删除了我的自定义 DELETE journal_mode。我可以得出结论,因为在添加 Ensembles 代码之后,我可以看到生成了三个 sqlite 文件,而不是一个。

这是已知的 requirement/behavior 合奏吗? Ensemble 能否仅在 WAL 日志模式下正常运行,或者我能否将其配置为同样使用 DELETE 日志模式?

提前致谢。

有一个 persistentStoreOptions 属性 可以用来告诉 CDEPersistentStoreEnsemble 应该使用什么选项来访问存储。当您创建合奏对象时,只需将您的选项传递给 属性。