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

标签 ios migration realm

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/

相关文章:

ios - 删除 Realm 对象后更新 UICollectionView

ios - Realm - 过滤大于字符串属性的对象

api - 迁移 - 零停机时间更改 DNS 中记录的 IP

ios - 如何在 iOS 中显示来自 IP Camera/CCTV 的 RTSP

objective-c - NSURLConnection 后查看 Controller Segue 延迟

ios - tableviewCell的字幕样式添加UISwitch

c# - 如何在迁移中使用 DbContext?

iphone - 重新测试 iPhone 核心数据迁移到新版本的最快方法是什么?

java - 如何将 RealmList 更改为 RealmResult?

ios - 通过跳跃将 UIView 移动到 x 位置