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

Realm Swift中使用@Persisted关联子对象失败问题求助

问题原因与解决方案

核心问题是DataModel中的child列表未使用@Persisted修饰,Realm不会持久化未标记@Persisted的属性,所以你添加的子对象只存在于内存中,不会写入数据库。

你之前尝试@Persisted var child: List<ChildModel>报错,大概率是ChildModel本身未正确配置为Realm持久化对象,而非DataModel的问题。

修正步骤

1. 正确配置DataModel的子对象列表

必须用@Persisted修饰List类型属性,且无需手动初始化(Realm会自动处理):

class DataModel: Object {
    @Persisted(primaryKey: true) var id: UUID
    @Persisted var title: String = ""
    @Persisted var child: List<ChildModel> // 移除手动初始化代码
}

2. 确保ChildModel是合法的Realm对象

所有需要持久化的属性都要加@Persisted,且类必须继承Object:

class ChildModel: Object {
    @Persisted var childStr: String = ""
    // 可选:如果需要主键,可添加@Persisted(primaryKey: true) var id: UUID
}

3. 处理Schema迁移(调试阶段可选)

如果之前已经运行过旧版本代码,需要让Realm更新数据结构。调试时最简单的方式是删除App后重新安装;正式环境则需要配置Realm迁移。

验证

修改完成后重新运行代码,执行createChild后,getData就能正确输出子对象数量和内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:42:18