1、valueForKeyPath可以获取数组中的最小值、最大值、平均值、求和。代码如下:
NSArray *array = @[@"10", @"20", @"40", @"50", @"5", @"15"];
//总和
CGFloat sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];
CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];
CGFloat max = [[array valueForKeyPath:@"@max.floatValue"] floatValue];
CGFloat min = [[array valueForKeyPath:@"@min.floatValue"] floatValue];
NSLog(@"sum - %f avg - %f max - %f min - %f",sum,avg,max,min);
输出结果 : sum - 140.000000 avg - 23.333334 max - 50.000000 min - 5.000000
2、valueForKeyPath可以获取数组中相同key的元素
NSArray *arr = @[@{@"name":@"lv",@"name":@"zhangsan",@"age":@"13"}];
NSLog(@"相同的key元素的值 %@", [arr valueForKeyPath:@"name"]);
输出结果:相同的key元素的值 ( lv )
3、valueForKeyPath 可以使用. 来一层一层向下索引,当多个字典层级时,取子层级中的属性就非常简单了
NSDictionary *dict = @{@"dict1":@{@"dict2":@{@"name":@"lishi",@"info":@{@"age":@"12"}}}};
id res = [dict valueForKeyPath:@"dict1.dict2.name"];
NSLog(@"res = %@",res);
输出结果:res = lishi
4、删除重复的数据
NSArray *newArray = @[@"1", @"2", @"3", @"2", @"1"];
NSArray *deleltNewA = [newArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
NSLog(@"删除后新的数组 = %@",deleltNewA);
输出结果 :
删除后新的数组 = (
3,
1,
2 )
5、嵌套使用(先删除对应值的重复数据再取值)
NSArray *array1 = @[@{@"name" : @"xiaoming",
@"age" : @1},
@{@"name": @"xiaoze",
@"age" : @2},
@{@"name": @"xiaoze",
@"age" : @3},
@{@"name": @"xiaohua",
@"age" : @4}];
NSArray *newArray1 = [array1 valueForKeyPath:@"@distinctUnionOfObjects.name"];
NSLog(@"去掉重复的数据 = %@",newArray1);
输出结果 :
去掉重复的数据 = (
xiaoze,
xiaohua,
xiaoming
)
6、其它地方使用
UITextField * test = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 40)];
test.placeholder = @"测试数据";
test.borderStyle = UITextBorderStyleLine;
[self.view addSubview:test];
[test setValue:[UIColor blueColor] forKeyPath:@"_placeholderLabel.textColor"];