2

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?

Alex
  • 393
  • 6
  • 21

1 Answers1

5

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"];
Dave DeLong
  • 242,470
  • 58
  • 448
  • 498