核心数据中不同值的总和

时间:2015-09-08 14:41:29

标签: objective-c core-data

我的应用中有一个核心数据模型,包含一些不同的日期。每个日期都有一个数量值。现在我想在一个查询中得到每个日期的总和。请注意,日期并不明确,这意味着有多个2015/01/05等等。

我是核心数据的新手,并且真的在努力解决这些问题。知道怎么做到这一点。

1 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是使用NSExpression计算总和,并使用propertiesToGroupBy将总和范围限制为每个不同的日期。假设您的日期属性名为yearMonth,并且您想要求和的值称为quantity

NSExpression *sumExp = [NSExpression expressionWithFormat:@"sum:(quantity)"];
NSExpressionDescription *sumED = [[NSExpressionDescription alloc] init];
sumED.name = @"sumOfQuantity";
sumED.expression = sumExp;
sumED.expressionResultType = NSDoubleAttributeType;
NSError *error;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"];
request.propertiesToFetch = @[@"yearMonth", sumED];
request.propertiesToGroupBy = @[@"yearMonth"];
request.resultType = NSDictionaryResultType;
NSArray *results = [context executeFetchRequest:request error:&error];
NSLog(@"Sums of quantity by year/month are: %@", results);

结果应该是一个字典数组,每个字典有两个键:" yearMonth"作为约会的关键," sumOfQuantity"作为相应金额的关键。