Realm 是否可以像 Rails 那样进行线性、更集中、独立的迁移?
例如,据我目前的理解,如果 Person
类更改两次(即两次迁移),当添加 migration 2
并且最终架构发生更改时,migration 1
将需要修改,以便迁移到最终架构。
有没有办法在两次迁移之间迁移到中间架构(当迁移 1
就是全部时的架构)?
我意识到这会降低效率,因为需要创建临时表并完成额外的工作,而不是仅仅迁移到最新的模式。但是,修改旧迁移、认知开销、测试复杂性等所花费的开发时间更少。
最佳答案
有很多场景支持 Realm 中的线性迁移,但您描述的情况不支持。 Realm 可以执行迁移而不必保留所有模式的完整历史,就像 Core Data 通过其 xcdatamodeld 包所做的那样,原因是 Realm 可以访问模式(在磁盘上)和目标模式(内存中的模型类)。
为了支持您请求的用例,您必须在您的应用程序中保留架构的所有先前版本,以便 Realm 可以在中间迁移步骤中知道要创建哪些表。作为 Realm 用户,这不仅会给您带来更多工作,而且它是一种设计反模式,无疑会导致效率降低和迁移时间延长。
我希望这是有道理的,如果您愿意,我很乐意进一步解释这一点。
有关更多信息,请参阅 Realm 的迁移文档,其中包含更多内容:https://realm.io/docs/objc/latest/#migrations
关于ios - 您能否以更加专注和线性的方式使用 Realm 进行迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235422/