gpt4 book ai didi

ios - 复杂的 NSPredicates : comparing values on the most-recent object

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

我有一个复杂的谓词,我正在努力解决。

基本上,我有一个 Student 对象。学生有 testScoreObjects。 TestScoreObject 具有 scoreDate (NSDate) 和 score (NSNumber) 等属性。

我想要一份最近(按 scoreDate)TestScoreObject 的分数大于 n 的学生的列表。

理想情况下,在 NSFetchedResultsController 上实现一个 NSPredicate 会很棒。

我知道如何通过遍历所有学生以编程方式完成此操作,但我想知道是否可以使用谓词来完成此操作,以便我可以保留拥有 FetchedResultsController 的所有好处。

感谢所有帮助!

最佳答案

我会使用以下谓词:

NSString *format = @"SUBQUERY(testScoreObjects, $each, $each.score > $n && $each.scoreDate == testScoreObjects.@max.scoreDate)[SIZE] > 0";
NSDictionary *substitutions = @{@"n": @3}; // 3 is the value for n
NSPredicate *predicate = [[NSPredicate predicateWithFormat:format] predicateWithSubstitutionVariables:substitutions];

NSString *format = @"ANY SUBQUERY(testScoreObjects, $each, $each.score > $n).scoreDate == testScoreObjects.@max.scoreDate";
NSDictionary *substitutions = @{@"n": @3}; // 3 is the value for n
NSPredicate *predicate = [[NSPredicate predicateWithFormat:format] predicateWithSubstitutionVariables:substitutions];

两者都可以正确地过滤数组,但我还没有测试 CoreData 是否能够将它们转换为 SQL(因此它可以与获取请求一起使用)。

在处理大型商店时,第二个谓词应该更有效(据我所知),因为 testScoreObjects.@max.scoreDate 每次只计算一次学生。当然,实际结果可能会有所不同。

关于ios - 复杂的 NSPredicates : comparing values on the most-recent object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963427/

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