我正在寻找一种有效的方法来做到这一点。我有一个具有2个属性的实体:isPrivate和points。 isPrivate可能有两个值之一:y或n。点数,范围在-200到200之间。
我需要按以下方式对点进行分组:
-200 to 0: 340pts
0 to 100: 231pts
100 to 200: 987pts.
我正在运行一个谓词来获取记录,每个记录需要一个记录:
...
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isPrivate = %y"];
...
NSArray *ks = [[NSArray alloc] initWithArray:[context executeFetchRequest:fetchRequest error:&error]];
NSNumber *t = [ks valueForKeyPath:@"@sum.points"];
...
它有效,但我正在寻找一种更好的方法。
首先,按照我的方式,我将记录加载到内存中,然后加载到NSArray中。如果我能避免这种情况,那将是完美的 其次,如果我能一步完成,那可能会更好。
对此的完美解决方案是在单个谓词中对记录进行分组和求和的方法,不要将记录加载到内存中,只得到总和,而不是所有数据。
TKS。
答案 0 :(得分:2)
我想你想要fetch specific values using an NSExpression.
这允许仅检索与特定属性关联的值。然后,使用集合运算符,您可以快速找到总和,计数,最小值,最大值等。