我有一个实体交易,其中包括2个名为“ownedAccount”和“amount”的变量。
我想做的是通过ownedAccount获取所有交易的组,并获得每个组中金额的总和
提前谢谢
答案 0 :(得分:1)
您必须创建NSFetchRequest
并使用setPropertiesToGroupBy
方法。
要获取属性的总和,您必须使用NSExpression
和NSExpressionDescription
的组合:
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];
有关NSExpression
:Apple Docs NSExpression
创建NSFetchRequest
时,您必须确保将结果设置为NSDictionaryResultType
,并将totalAmountExprDesc
添加到要提取的属性中。请注意,您还要将要分组的属性添加到要提取的属性。
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"];
[fetchRequest setResultType:NSDictionaryResultType];
[fetchRequest setPropertiesToFetch:@[@"ownedAccount", totalAmountExprDesc, ...]];
[fetchRequest setPropertiesToGroupBy:@[@"ownedAccount"]];
有关NSFetchRequest
:Apple Docs NSFetchRequest
这样您就可以使用基本的获取请求来进行查询。