我可以将键值集合功能与NSExpression
结合使用吗?我在CoreData中使用它来从我的托管对象类中获取最大值:它运行得很好。
现在我有另一个包含NSSet
的托管对象类。我想在NSSet
中找到@sum值的最大值:
例如,我有10个托管对象,每个托管对象都有一个NSSet值。我想@sum每个集合中的值,然后找到10个托管对象中最大的一个。
我通常会使用[object valueForKeyPath:@"usageMetrics.@sum.value"]
获得总和 - 这很好。
我想结合并做一些像:
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"usageMetrics.@sum.value"];
NSExpression *valueSumExpression = [NSExpression expressionForFunction:@"max:" arguments:[NSArray arrayWithObject:keyPathExpression]];
似乎无法正常工作
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid keypath element (not a relationship or attribute): @sum'
答案 0 :(得分:1)
我这样做:
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"usageMetrics.value"];
NSExpression *valueSumExpression = [NSExpression expressionForFunction:@"sum:" arguments:[NSArray arrayWithObject:keyPathExpression]];
返回一个包含12个结果的NSArray(这是它找到的托管对象的数量),并将值相加。
然后我做了:NSDecimalNumber *maxValue = [results valueForKeyPath:@"@max.maxValue"]; (maxValue being the name of the NSExpressionDescription)
哪个有效!
我想知道是否可以将sum:
和max:
堆叠到NSExpression
。