在开发过程中,经常会用到NSArray,然后找出数组中的最大值、最小值,很多时候我们一般用for循环来封装一个算法求最值,虽然可以但是还是不够快速。其实Apple底层可我们封装了一个十分好用的API,可以通过valueForKeyPath方法来设置你想要获取的一些数组。
NSMutableArray* array = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
CGFloat num = arc4random() % 100 + 1;
[array addObject:[NSNumber numberWithFloat:num]];
}
CGFloat maxValue = [[array valueForKeyPath:@"@max.floatValue"] floatValue];
CGFloat minValue = [[array valueForKeyPath:@"@min.floatValue"] floatValue];
min、max是NSArray的私有属性,通过.语法是拿不到的,会报错的。类似这种私有属性还有
@”@avg.floatValue” (获取平均值),
@”@count.floatValue”(获取数组大小)
@"@sum.floatValue"(求和)
还可以去重
NSArray *array = @[@"a", @"wechat", @"qq", @"msn", @"wechat"];
NSArray *deleltNewA = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];