我的应用中有一个核心数据模型,包含一些不同的日期。每个日期都有一个数量值。现在我想在一个查询中得到每个日期的总和。请注意,日期并不明确,这意味着有多个2015/01/05等等。
我是核心数据的新手,并且真的在努力解决这些问题。知道怎么做到这一点。
答案 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"作为相应金额的关键。