使用Core Data对几个记录进行分组和汇总

时间:2011-02-28 14:14:43

标签: iphone objective-c core-data group-by sum

我正在寻找一种有效的方法来做到这一点。我有一个具有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。

1 个答案:

答案 0 :(得分:2)

我想你想要fetch specific values using an NSExpression.

这允许仅检索与特定属性关联的值。然后,使用集合运算符,您可以快速找到总和,计数,最小值,最大值等。