You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关闭SwiftUI Sheet时触发Realm迁移错误问题咨询

问题解答

为什么同步Realm增量变更会要求迁移

同步 Realm 理论上新增可选字段、带默认值的必填字段这类增量变更无需执行本地迁移,你遇到的报错是两个原因共同导致的:

  • 你手动给 ObservedResults 传入了自定义的 Realm.Configuration,和同步会话自动生成的配置参数不一致,触发了本地 schema 校验逻辑的误判
  • 你使用的 Realm Cocoa 10.5.1 版本存在已知的 SwiftUI 组件缺陷,ObservedResults 初始化时未正确继承同步 Realm 免迁移增量变更的校验规则,当父视图在 sheet 关闭后重绘、重新初始化 ObservedResults 时,就会抛出迁移要求的错误。

调整方案

  • 第一步:移除所有 ObservedResults 中手动传入的 configuration 参数,同步 Realm 的配置由同步会话自动管理,手动指定 schemaVersion 反而会造成配置冲突,你加的那行配置本身是冗余的,还会加剧问题。
  • 第二步:检查新增字段的模型定义:可选类型可直接新增,必填类型必须指定默认值(比如 @Persisted var visible = false),符合增量变更的要求。
  • 第三步:优先将 Realm Cocoa 版本升级到 10.10.0 及以上,该版本已经修复了 ObservedResults 相关的 schema 校验 Bug,升级后即可正常兼容免迁移的增量变更。
  • 如果你暂时无法升级版本,可以在 App 启动、同步用户登录完成后,将同步用户生成的 Realm 配置设置为全局默认配置:Realm.Configuration.defaultConfiguration = user.flexibleSyncConfiguration(),后续所有 ObservedResults 统一使用全局默认配置,避免不同视图的配置不一致触发校验错误。

是否属于Bug

你当前使用的 10.5.1 版本中的该问题属于已知 Bug,是 SwiftUI 相关组件的校验逻辑不完善导致的,高版本已完成修复。

内容的提问来源于stack exchange,提问作者Kurt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:54:01