问题
My current version for get @min or @max value is:
for (NSManagedObject *destination in allSpecifics)
{
[allRates addObject:[destination valueForKey:@"rate"]];
}
NSExpression *arrayExpression = [NSExpression expressionForConstantValue: allRates];
NSArray *argumentArray = [NSArray arrayWithObject: arrayExpression];
NSExpression* expression = [NSExpression expressionForFunction:@"min:" arguments:argumentArray];
id result = [expression expressionValueWithObject: nil context: nil];
NSNumber *rateForAdd = result;
allSpecific is array of NSManagedObjects. Looks like is a not good way to fill array of objects before (memory and process time cost). Probably somebody can help refactor it?
回答1:
So you have an array (allSpecifics
) of NSManagedObjects
, and these objects have a rate
property? If that's correct then:
To find the:
- minimum rate value:
NSNumber *minimumRate = [allSpecifics valueForKeyPath:@"@min.rate"];
- maximum rate value:
NSNumber *minimumRate = [allSpecifics valueForKeyPath:@"@max.rate"];
- average rate value:
NSNumber *minimumRate = [allSpecifics valueForKeyPath:@"@avg.rate"];
- summed rate value:
NSNumber *minimumRate = [allSpecifics valueForKeyPath:@"@sum.rate"];
来源:https://stackoverflow.com/questions/5023017/using-a-min-in-predicate