在谓词中使用@min

时间:2011-02-16 22:37:58

标签: cocoa nspredicate

我获取@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是NSManagedObjects的数组。 看起来像是一种填充对象数组的好方法(内存和处理时间成本)。可能有人可以帮助重构它吗?

1 个答案:

答案 0 :(得分:5)

所以你有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"];