Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多级属性在RealmSwift中创建LinkingObjects属性_Swift_Realm_Realm Cocoa - Fatal编程技术网

使用多级属性在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")
        }
    }
}