Realm演示数据库具有反向连接的示例对象:objectReference具有指向RealmTestClass1的链接。
class RealmTestClass1: Object {
dynamic var integerValue = 0
let arrayReference = List<RealmTestClass0>()
}
class RealmTestClass2: Object {
dynamic var boolValue = false
dynamic var objectReference: RealmTestClass1?
}
如何重新创建相同的结构? objectReference属性需要什么代码才能创建与父对象属性相同的链接?
答案 0 :(得分:0)
Realm中的链接是单向。因此,如果一个to-many属性Person.dogs链接到Dog实例并且一个属性Dog.owner链接到Person,则这些链接彼此独立。将Dog附加到Person实例的dogs属性,不会自动将dog的所有者属性设置为此Person。因为手动同步关系对是容易出错,复杂和重复的信息,所以Realm公开了一个API来检索下面描述的反向链接。
使用反向关系,您可以通过特定属性获取链接到给定对象的所有对象。例如,在Dog实例上调用Object.linkingObjects(_:forProperty:)
将返回指定类的所有对象,这些对象链接到具有指定属性的调用实例。通过在Dog:
class Person: Object {
// ... other property declarations
let dogs = List<Dog>()
}
class Dog: Object {
dynamic var name = ""
dynamic var age = 0
var owners: [Person] {
// Realm doesn't persist this property because it only has a getter defined
// Define "owners" as the inverse relationship to Person.dogs
return linkingObjects(Person.self, forProperty: "dogs")
}
}
这取自Realm's docs on relationships,我建议您阅读。