ios开发之--valueForKeyPath的用法

1、获取数组中的平均值,最大值,最小值,总和,代码如下:

NSArray *ary = @[@10,@24,@45,@67,@58,@27,@48];
    
[self caculateArray:ary];

-(NSString *)caculateArray:(NSArray *)array
{
    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 is \n %.f-\n-%.f-\n-%.f-\n-%.f",sum,avg,max,min);
    return [NSString stringWithFormat:@"%f",sum];
}

打印如下;

2、获取数组中相同key的元素,代码如下:

NSArray *ary1 = @[
                           
        @{@"city":@"beijing",@"person":@{@"name":@"libojue"}},
        @{@"city":@"zhengzhou"}
                      ];
[self returnAry:ary1];

-(NSArray *)returnAry:(NSArray *)array
{
    return [array valueForKeyPath:@"city"];
}

打印如下:

3、也是最重要的,我们平常在取最里层的属性时,需要遍历然后根据index,进行取,效率低下,用valueForKeyPath的话,可以一层一层的向下索引,就很简单了,代码如下:

    NSDictionary *dict = @{
                           @"data":@{
                                   @"data2":@{
                                           @"name":@"lily",
                                           @"info":@{
                                                   @"age":@"12",
                                                   @"sex":@"1"
                                                   }
                                           }
                                   }
                           };
    [self returndict:dict];

-(id)returndict:(NSDictionary *)dict
{
    return [dict valueForKeyPath:@"data.data2.name"];
}

打印如下:

 

4、去除数组里面重复的元素,代码如下;

NSArray *ary2 = @[@"a",@"a",@"b",@"a1",@"c",@"d"];
[ary2 valueForKeyPath:@"@distinctUnionOfObjects.self"];

打印如下:

 

 另一种方法, containsObject方法,代码如下:

NSArray *dataArray = @[
                           @"a",@"b",@"cc",
                           @"a",@"b1",@"c1",
                           @"a"];
    NSMutableArray *listAry = [[NSMutableArray alloc]init];
    for (NSString *str in dataArray) {
        if (![listAry containsObject:str]) {
            [listAry addObject:str];
        }
    }
    NSLog(@"%@",listAry);

以上方法也可以去除数组里面的相同元素。

 

 5、嵌套使用,删除书里面对应key的重复数据,然后再完成取值,代码如下:

    NSArray *ary3 = @[
                      @{@"name":@"jack",@"age":@"28"},
                      @{@"name":@"lucy",@"age":@"30"},
                      @{@"name":@"jack",@"age":@"28"},
                      @{@"name":@"joe",@"age":@"22"}
                      ];
    [ary3 valueForKeyPath:@"@distinctUnionOfObjects.name"];

打印如下:

6、改变UITextField的placeholder的颜色,代码如下:

[self.userNameTF setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];

效果如下:

仅做记录,上面所有方法亲测有效!

转载于:https://www.cnblogs.com/hero11223/p/9635771.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值