领域 LinkingObjects 属性未出现在领域资源管理器中
Posted
技术标签:
【中文标题】领域 LinkingObjects 属性未出现在领域资源管理器中【英文标题】:Realm LinkingObjects property is not appearing in Realm Explorer 【发布时间】:2016-12-12 22:34:10 【问题描述】:我是 ios 开发和领域的新手,在代码优先数据库构建方面拥有不错的经验。
Routine 和 Workout 类之间存在一对多关系,其中一个 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