zoukankan      html  css  js  c++  java
  • 高效开发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"]

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

  • 相关阅读:
    工厂设计模式
    Java 注解 (Annotation)你可以这样学
    java的多线程和并发库
    NIO高并发基础
    Java编写画图板程序细节-保存已画图形
    程序员必须知道的知识
    慢慢读懂经济【持续更新】-经济浅谈
    Spring IOC与AOP的简单实现
    Python网络爬虫【持续更新】-BeautifulSoup库的使用
    Python网络爬虫【持续更新】-requests库的使用
  • 原文地址:https://www.cnblogs.com/llguanli/p/8892164.html
Copyright © 2011-2022 走看看