using a @min in predicate

会有一股神秘感。 提交于 2019-12-22 17:57:11

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!