ios - 反向关系过滤列表

标签 ios swift realm nspredicate

我今天有点挣扎,以 RealmSwift 文档中给出的例子为例,我想做的是找到一个查询,让我可以得到至少只有一个主人的狗(从狗对象)。

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

关于ios - 反向关系过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41469654/

相关文章:

ios - 具有删除对象的值类型的 Realm

ios - AudioKit 缓冲区消耗大量内存

ios - 表格 View 自定义单元格中的按钮

IOS 9 NSURLConnection 弃用

swift - didRegisterForRemoteNotificationsWithDeviceToken 不会被触发 - 推送通知不起作用

ios - 无法从 Realm 文件中读取数据

ios - 我如何分离这些图像选择器功能?

swift - 具有物理和强大性能的用户创建线的创建方法

ios - 在 Swift 中以编程方式将 UIImageView 替换为 PDFView

ios - 在 Realm 中实现 Parse 的 currentUser