使用多级属性在RealmSwift中创建LinkingObjects属性
根据,这是创建反向关系的方式: 人 假设我们有另一个类,名为使用多级属性在RealmSwift中创建LinkingObjects属性,swift,realm,realm-cocoa,Swift,Realm,Realm Cocoa,根据,这是创建反向关系的方式: 人 假设我们有另一个类,名为狗食,我们想创建一个名为买家的反向关系,跟踪人的哪些实例有一只吃该狗食的狗。我们可以尝试以下方法: 狗(v2) 但是,这会引发以下错误:Property'dogs.favoriteFoods'声明为链接对象的来源属性'buyer'不存在。 还有其他方法可以达到同样的效果吗?这可以通过过滤器来实现,但需要注意的是,我们需要查询的狗食对象需要是领域的一部分 守则如下: class DogFood: Object { // ... o
狗食
,我们想创建一个名为买家
的反向关系,跟踪人
的哪些实例有一只吃该狗食的狗。我们可以尝试以下方法:
狗(v2)
但是,这会引发以下错误:Property'dogs.favoriteFoods'声明为链接对象的来源属性'buyer'不存在。
还有其他方法可以达到同样的效果吗?这可以通过过滤器来实现,但需要注意的是,我们需要查询的狗食对象需要是领域的一部分
守则如下:
class DogFood: Object {
// ... other property declarations
var items: Results<Person> {
if let realm = self.realm {
return realm.objects(Person).filter(NSPredicate(format: "ANY dogs.favoriteFoods.id == %@", self.id))
} else {
return RealmSwift.List<Person>().filter("1 != 1")
}
}
}
class狗食:对象{
//…其他财产声明
var项目:结果{
如果让realm=self.realm{
返回realm.objects(Person).filter(NSPredicate(格式:“ANY dogs.favoriteFoods.id==%@”,self.id))
}否则{
返回RealmSwift.List().filter(“1!=1”)
}
}
}
属性realm
属于realm?
类型,通过继承对象
进入图片。它指向一个特定的对象
实例所在的领域,如果没有分配给某个实例,则返回nil
。如果是这种情况,我们将强制属性items
返回一组空的结果
提交到GitHub上的Cocoa repo领域:。这被认为是一种进步。
class Dog: Object {
// ... other property declarations
let owners = LinkingObjects(fromType: Person.self, property: "dogs")
}
class Dog: Object {
// ... other property declarations
let favoriteFoods = List<DogFood>
let owners = LinkingObjects(fromType: Person.self, property: "dogs")
}
class DogFood: Object {
// ... other property declarations
let buyers = LinkingObjects(fromType: Person.self, property: "dogs.favoriteFoods")
}
class DogFood: Object {
// ... other property declarations
var items: Results<Person> {
if let realm = self.realm {
return realm.objects(Person).filter(NSPredicate(format: "ANY dogs.favoriteFoods.id == %@", self.id))
} else {
return RealmSwift.List<Person>().filter("1 != 1")
}
}
}