我今天有点挣扎,以RealmSwift文档中给出的例子为例,我试图做的是找到一个查询,它将允许我从dog对象中获取至少只有一个所有者的dogs。

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
}

但它失败了,所以我假设我的查询是不正确的,虽然我没有找到任何关于这方面的文档,任何洞察都将非常感谢。

最佳答案

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

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

请查看更多详细信息:https://realm.io/docs/swift/latest/#filtering

10-08 17:02