在谓词中使用@min

Ale*_*lex 2 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;
Run Code Online (Sandbox Code Playgroud)

allSpecific是NSManagedObjects的数组.看起来像是一种填充对象数组的好方法(内存和处理时间成本).可能有人可以帮助重构它?

Dav*_*ong 5

所以你有一个array(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"];