领域 LinkingObjects 属性未出现在领域资源管理器中

Posted

技术标签:

【中文标题】领域 LinkingObjects 属性未出现在领域资源管理器中【英文标题】:Realm LinkingObjects property is not appearing in Realm Explorer 【发布时间】:2016-12-12 22:34:10 【问题描述】:

我是 ios 开发和领域的新手,在代码优先数据库构建方面拥有不错的经验。

RoutineWorkout 类之间存在一对多关系,其中一个 Routine 可能包含许多不同的锻炼。这是我的课程:

class Routine: Object 
    //Properties
    dynamic var id : Int = 0
    dynamic var routineName : String = ""

    //Relationships
    let workouts = LinkingObjects(fromType: Workout.self, property: "routine")

    //Primary Key Declaration
    override static func primaryKey() -> String? 
        return "id"
    
 

class Workout: Object 
    //Properties
    dynamic var id : Int = 0
    dynamic var workoutName : String = ""

    //Relationships
    let exercises = List<Exercise>()
    dynamic var routine : Routine?

    //Primary Key Declaration
    override static func primaryKey() -> String? 
        return "id"
    

我这样做是为了理想的关系吗?当我构建它并在 Realm Browser 中查看时,Routine 中的属性 workouts 不会出现。

谢谢。

【问题讨论】:

嗯,这些属性至少应该在浏览器中仍然可见。您是否能够从您的应用程序代码中确认正在保存练习和例程,并且您可以从 Realm 中取回这些信息? 到目前为止我搞砸的一切都在浏览器中,没有尝试过应用程序本身的任何操作,但我可以在一秒钟内看到。此外,很清楚,唯一没有正确显示的属性是上面采样的 LinkingObjects 属性锻炼。 【参考方案1】:

这是预期的行为。 LinkingObjects 表示通过属性关系链接到其拥有的模型对象的零个或多个对象。此外,它是一种自动更新容器类型。在添加新的Workout 对象并分配routine 属性时,workouts 会自动更新。

LinkingObjects 在内部被视为“查询”而不是持久属性。当访问workouts 属性时,Realm 查询以查找包含匹配的routine 对象的Workout 对象。这就是为什么 workouts 属性没有显示在 Realm Browser 中的原因。

【讨论】:

以上是关于领域 LinkingObjects 属性未出现在领域资源管理器中的主要内容,如果未能解决你的问题,请参考以下文章

RealmSwift LinkingObjects和Decodable

15倍提升 & 40倍存储优化,TDengine在领益智造的实践

出现错误:无法读取未定义的属性状态

SceneKit DAE 动画未出现在属性中

由于无法读取未定义角度的属性“键”而出现错误

下一个 redux 包装器出现无法读取未定义的属性 'getState' 的错误