zoukankan      html  css  js  c++  java
  • 高效开发iOS -- 那些不为人知的KVC[转载]

    valueForKeyPath


    本篇来讲解一下那些不为人知,也经常被忽略掉,并且很实用的KVC干货小技巧

    获取数组里的,最大、最小、平均、求和


     NSArray *array = @[@"1",@"3",@2,@9.5,@"1.2"]; 
    NSNumber *sum = [array valueForKeyPath:@"@sum.floatValue"]; 
    NSNumber *avg = [array valueForKeyPath:@"@avg.floatValue"]; 
    NSNumber *max = [array valueForKeyPath:@"@max.floatValue"]; 
    NSNumber *min = [array valueForKeyPath:@"@min.floatValue"];  
    NSLog(@"sum:%@",sum); 
    NSLog(@"avg:%@",avg);
     NSLog(@"max:%@",max); 
    NSLog(@"min:%@",min);
    

    删除重复数据


    NSArray *array = @[@"name", @"w", @"aa", @"zxp", @"aa"]; //返回的是一个新的数组
     NSArray *newArray = [array valueForKeyPath:@"@distinctUnionOfObjects.self"]; 
    NSLog(@"%@", newArray);
    

    同样可以嵌套使用,先剔除name对应值的重复数据再取值


    NSArray *array = @[ @{@"title":@"zxp",@"name":@"zhangxiaoping"}, @{@"title":@"zxp2",@"name":@"zhangxiaoping2"}, @{@"title":@"zxp",@"name":@"zhangxiaoping3"}, @{@"title":@"zxp",@"name":@"zhangxiaoping"}];
    //根据name字段,来进行重复删除。
    NSArray *newArray = [array valueForKeyPath:@"@distinctUnionOfObjects.name"];
    //如果要根据title字段来删除重名的写法为`@distinctUnionOfObjects.title` 
    NSLog(@"%@", newArray);
    /*
    print:( zhangxiaoping3, zhangxiaoping2, zhangxiaoping)是一个字符串数组*/
    

    进行实例方法的调用


    NSArray *array = @[@"name", @"w", @"aa", @"ZXPing"]; 
    NSLog(@"%@", [array valueForKeyPath:@"uppercaseString"]);
    

    相当于数组中的每个成员执行了uppercaseString方法,然后把返回的对象组成一个新数组返回。既然可以用uppercaseString方法,那么NSString的其他方法也可以,比如[array valueForKeyPath:@"length"]。当然,其他对象的实例方法也可以以此类推来进行调用~!



    作者:砖打各种不服
    链接:https://www.jianshu.com/p/a6a0abac1c4a
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    微信运营
    1.数据库&SQL语言
    16.线程
    15.IO流
    14.异常
    13.集合
    12.常用类
    11.String类-StringBuffer类、StringBuilder类
    10.Object类-包装类-内部类
    9.接口
  • 原文地址:https://www.cnblogs.com/tangyuanby2/p/10196237.html
Copyright © 2011-2022 走看看