iOS valueForKeyPath基本用法

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"];

你可能感兴趣的:(ios随笔)