gpt4 book ai didi

ios - NSPredicate 过滤关系

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:29:18 26 4
gpt4 key购买 nike

假设我有 Person 和 Pet 实体以及一对多关系,因此 Person 有一个宠物列表。目前我可以使用这个谓词按宠物的年龄进行过滤(为方便起见,在 Swift 和 Objective-C 中)

NSPredicate(format: "pets.age > 3")
[NSPedicate predicateWithFormat:@"pets.age > 3"]

但这相当不舒服而且不是很健壮——因为 Pet 实体可能会从许多其他实体(即医生、其他宠物 sibling 、可能是宠物玩具等——仅供您想象)查询。

我想做的事情:

NSPredicate(format: "pets MATCH %@", NSPredicate(format: "age > 3"))
[NSPedicate predicateWithFormat:@"pets MATCH %@", [NSPedicate predicateWithFormat:@"age > 3"]]

所以我可以 Pet 实体为我提供正确的年龄谓词,然后在任何其他谓词中使用它。我该如何存档?我想在 iOS 设备上的 CoreData 上使用它,因此 CoreData 将从中获取哪个 SQL 查询非常重要,因为性能很重要。

最佳答案

您可以使用 %K 作为谓词字符串中的关键路径占位符

NSPredicate(format: "%K > %@", "age", "3")

因此,根据您的需要,您可以在创建谓词时使用一些具有不同运算符的常量

let greaterThanPredicate = "%K > %@"
let equalPredicate = "%K = %@"

如果您的要求更复杂,则依此类推或某种工厂类。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com