分组和总和分组

时间:2014-03-03 11:48:22

标签: ios core-data group-by

我有一个实体交易,其中包括2个名为“ownedAccount”和“amount”的变量。

我想做的是通过ownedAccount获取所有交易的组,并获得每个组中金额的总和

提前谢谢

1 个答案:

答案 0 :(得分:1)

您必须创建NSFetchRequest并使用setPropertiesToGroupBy方法。

要获取属性的总和,您必须使用NSExpressionNSExpressionDescription的组合:

NSExpression *amountExpr = [NSExpression expressionForKeyPath:@"amount"];
NSExpression *totalAmountExpr = [NSExpression expressionForFunction:@"sum:" arguments:@[amountExpr]];
NSExpressionDescription *totalAmountExprDesc = [[NSExpressionDescription alloc] init];
[totalAmountExprDesc setName:@"totalAmount"];
[totalAmountExprDesc setExpression: totalAmountExpr];
[totalAmountExprDesc setExpressionResultType:NSDoubleAttributeType];

有关NSExpressionApple Docs NSExpression

的更多信息

创建NSFetchRequest时,您必须确保将结果设置为NSDictionaryResultType,并将totalAmountExprDesc添加到要提取的属性中。请注意,您还要将要分组的属性添加到要提取的属性。

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"];
[fetchRequest setResultType:NSDictionaryResultType];
[fetchRequest setPropertiesToFetch:@[@"ownedAccount", totalAmountExprDesc, ...]];
[fetchRequest setPropertiesToGroupBy:@[@"ownedAccount"]];

有关NSFetchRequestApple Docs NSFetchRequest

的更多信息

这样您就可以使用基本的获取请求来进行查询。