反向关系的过滤列表

时间:2017-01-04 17:16:47

标签: ios swift realm nspredicate

今天我有点挣扎,以RealmSwift文档为例,我想要做的是找到允许我得到狗(来自狗对象)只有至少一个所有者的查询。 / p>

class Person: Object {
    // ... other property declarations
    let dogs = List<Dog>()
}

class Dog: Object {
    dynamic var name = ""
    dynamic var age = 0
    let owners = LinkingObjects(fromType: Person.self, property: "dogs")
}

我有这个基本方法:

public class func getDogs() -> Results<Dog>? {
    do {
        let aRealm = try Realm()
        let dogs = aRealm.objects(Dog.self).filter("ANY owners != nil")
        return dogs
    } catch {
        print(error)
    }
    return nil
}

但它失败了,所以我认为我的查询不正确,虽然我没有找到任何关于此的文档,但我们将非常感谢任何见解。

1 个答案:

答案 0 :(得分:1)

您可以使用聚合表达式@count。以下查询过滤具有至少一个所有者的狗。

let dogs = aRealm.objects(Dog.self).filter("owners.@count > 0")

请参阅更多详情:https://realm.io/docs/swift/latest/#filtering