используя @min в предикате - PullRequest
       1

используя @min в предикате

2 голосов
/ 17 февраля 2011

Моя текущая версия для получения значения @min или @max:

    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 - это массив объектов NSManagedObject. Похоже, это плохой способ заполнить массив объектов раньше (затраты времени и памяти). Возможно, кто-то может помочь в рефакторинге?

1 Ответ

5 голосов
/ 17 февраля 2011

Итак, у вас есть массив (allSpecifics) NSManagedObjects, и эти объекты имеют свойство rate? Если это правильно, то:

Чтобы найти:

  • минимальное значение ставки:
    NSNumber *minimumRate = [allSpecifics valueForKeyPath:@"@min.rate"];
  • максимальное значение ставки:
    NSNumber *minimumRate = [allSpecifics valueForKeyPath:@"@max.rate"];
  • среднее значение ставки:
    NSNumber *minimumRate = [allSpecifics valueForKeyPath:@"@avg.rate"];
  • Суммированное значение ставки:
    NSNumber *minimumRate = [allSpecifics valueForKeyPath:@"@sum.rate"];
...