我有一个模型'钢笔',它有这样的属性:“makerName”和“Count”。我怎样才能得到所有'计数'的总和?核心数据能算出来吗?感谢...
答案 0 :(得分:10)
是的,您可以从核心数据中获取,而不是获取和评估结果。您可以使用NSExpression执行诸如对核心数据求和之类的函数。
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"Count"];
NSExpression *sumOfCountExpression = [NSExpression expressionForFunction:@"sum:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
有关可以使用的功能列表,请点击此处
然后,您需要创建一个NSExpressionDescription对象,您可以在其中设置刚刚创建的sumOfCountExpression的表达式。
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"sumOfCount"];
[expressionDescription setExpression:sumOfCountExpression];
[expressionDescription setExpressionResultType:NSDoubleAttributeType];
然后按照通常的方式构造您的请求,然后将该属性设置为获取该表达式。
[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];
答案 1 :(得分:9)
有两种方法可以解决这个问题:
首先 - 将数据提供给NSSet或NSArray并使用@sum运算符:
//assume that `pens` are NSArray of Pen
NSNumber *countSum=[pens valueForKeyPath:"@sum.count"];
第二个是使用特定的提取for specific value并添加了NSExpressionDescription和一个总和。对于较大的db来说,这种方式更难但更好
答案 2 :(得分:0)
我假设您想要的SQL等价物:
select sum(p.count)
from pens p
where makerName = '{whatever maker you are querying for}'
请查看此post以查找您要查找的代码。