KVC支持的聚合運算
- sum 求和
- max 最大值
- min 最小值
- avg 平均值
- count 數(shù)量
使用方法
新建一個類Person
,里面存放一個屬性age
#import <Foundation/Foundation.h>
@interface Person : NSObject
/** 年齡 */
@property (nonatomic, assign) NSUInteger age;
@end
創(chuàng)建一個數(shù)組,存放Person
對象
NSMutableArray<Person *> *persons = [NSMutableArray array];
for (int i = 1; i <= 5; i++) {
Person *p = [[Person alloc] init];
p.age = i;
[persons addObject:p];
}
使用@sum
@min
@max
@avg
@count
進行聚合運算
NSInteger sum = [[persons valueForKeyPath:@"@sum.age"] integerValue];
NSInteger min = [[persons valueForKeyPath:@"@min.age"] integerValue];
NSInteger max = [[persons valueForKeyPath:@"@max.age"] integerValue];
float avg = [[persons valueForKeyPath:@"@avg.age"] floatValue];
NSInteger count = [[persons valueForKeyPath:@"@count.age"] integerValue];
NSLog(@"sum=%zd", sum);
NSLog(@"min=%zd", min);
NSLog(@"max=%zd", max);
NSLog(@"avg=%g", avg);
NSLog(@"count=%zd", count);
打印結(jié)果
打印結(jié)果
數(shù)組中直接存放數(shù)值的情況
直接使用@運算符.floatValue
NSArray<NSNumber *> *arr = @[@1, @2, @3, @4];
NSNumber *avg = [arr valueForKeyPath:@"@avg.floatValue"];
NSNumber *sum = [arr valueForKeyPath:@"@sum.integerValue"];
NSLog(@"avg=%@", avg);
NSLog(@"sum=%@", sum);
打印結(jié)果
打印結(jié)果