• 高效开发iOS系列 -- 那些不为人知的KVC


    我的简书地址:http://www.jianshu.com/p/a6a0abac1c4a

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

    当然,其它对象的实例方法也能够以此类推来进行调用~。

  • 相关阅读:
    主函数main
    static关键字
    this关键字
    构造函数
    封装
    匿名对象
    java基础积累
    JAVA相关知识复习
    ORACLE数据库表空间查询
    两个日期的时间差
  • 原文地址:https://www.cnblogs.com/llguanli/p/8892164.html
Copyright © 2020-2023  润新知