Swift 可以在域中的筛选器中使用@max吗?

Swift 可以在域中的筛选器中使用@max吗?,swift,realm,Swift,Realm,我有一个目标,比如说 class Task:Object { dynamic var id:Int = 0 dynamic var name:String = "" override func primaryKey() -> String { return "id" } } 当我使用过滤器与最大 let tasks = realm.allObjects(ofType: Task.self) let results = tasks.filt

我有一个目标,比如说

class Task:Object {
    dynamic var id:Int = 0
    dynamic var name:String = ""

    override func primaryKey() -> String {
        return "id"
    }
}
当我使用过滤器与最大

let tasks = realm.allObjects(ofType: Task.self)
let results = tasks.filter(using: "id.@max")
我得到了一个错误:

无法分析格式字符串“id.@max”

然后我意识到我应该使用

let results = tasks.filter(using: "id == id.@max")
然后我又犯了一个错误:

由于未捕获异常“无效谓词”而终止应用程序,原因: '聚合操作只能在包含 数组属性'

现在我想知道如果我想在过滤器中使用@max,我能做什么


我知道我可以使用
排序
来获取具有最大id的任务。但我想知道我是否可以将其与筛选器一起使用。

因为在
id
上使用@max是不可能的。答案是否定的。
@max
只能使用in-List属性或类似属性,
id
为Int。

要检索id最大的任务,可以执行以下操作:

let tasks = realm.allObjects(ofType: Task.self)
let id = tasks.maximumValue(ofProperty: "id") as Int?
let newestTask = realm.object(ofType: Task.self, forPrimaryKey: id)

@max
不起作用的原因是它计算为集合成员的属性的最大值,但谓词是在每个单独项的上下文中计算的。

我认为您应该查看Realm中的NSPredicate备忘单。关于在querys上使用
@max
有一些内容:@Orlando谢谢。现在我知道@max不能用在
id
上,因为它的类型不是List或类似的东西。