您能否以更加专注和线性的方式使用 Realm 进行迁移?

Can you migrate with Realm in a more focused and linear fashion?

Realm 是否有可能进行线性、更集中、独立的迁移,Rails 是如何做到的?

例如,据我目前的理解,如果 Person class 更改两次(因此两次迁移),当添加 migration 2 并且最终架构更改时,migration 1 将需要修改,以便迁移到最终架构。

有没有办法在迁移之间迁移到中间模式(migration 1 时的模式)?

我意识到这会降低效率,因为需要创建临时表并完成额外的工作,而不是仅仅迁移到最新的模式。但是,花在修改旧迁移、认知开销、测试复杂性等方面的开发时间更少。

Realm 支持线性迁移的场景有很多,但是你描述的情况是不支持的。 Realm 可以执行迁移而不必保留所有模式的完整历史记录的原因,就像 Core Data 通过其 xcdatamodeld 包所做的那样,是因为 Realm 可以访问模式(在磁盘上)和目标模式(内存模型 类).

为了支持您请求的用例,您必须在您的应用程序中保留架构的所有先前版本,以便 Realm 可以在中间迁移步骤中知道要创建哪些表。作为 Realm 用户,这不仅会给您带来更多工作,而且它是一种设计反模式,无疑会导致效率降低和迁移时间延长。

我希望这是有道理的,如果您愿意,我很乐意进一步解释。

有关更多信息,请参阅 Realm 的迁移文档,其中包含更多内容:https://realm.io/docs/objc/latest/#migrations