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. Last-Modified、If-Modified-Since 实现缓存和 OutputCache 的区别
  2. MAC地址是什么
  3. Linq to Entities下存储过程的使用方法
  4. 查看Linux软件信息
  5. JavaWeb学习记录(十九)——jstl自定义标签之简单标签
  6. chromium安装flash
  7. 排序(5)---------高速排序(C语言实现)
  8. 使用Hadoop的MapReduce与HDFS处理数据
  9. Quirks模式是什么?它和Standards模式有什么区别
  10. Vue和React对比
  11. Linux分区规划与xshell使用排错
  12. Quartz简单实现定时任务管理(SSM+Quartz)
  13. 剑指Spring源码(二)
  14. react项目构建
  15. 从线程池到synchronized关键字详解
  16. 关于fit和transform
  17. CF#338D. GCD Table
  18. STM32中EXTI和NVIC的关系
  19. [Scala]Scala学习笔记六 文件
  20. Python3基本数据类型(三、列表)

热门文章

  1. python 将16进制转化为2进制
  2. python 打包成tar包
  3. python 正则表达式替换字符串中匹配的字符
  4. python pstats ,profile 性能分析
  5. 《剑指offer》第三十三题(二叉搜索树的后序遍历序列)
  6. Google chrome浏览器打不开网页,显示ERR_Failed...等问题的解决方法
  7. C#对GZIP压缩和解压
  8. Party CodeForces - 906C (状压)
  9. mysql 随机获取数据并插入到数据库中
  10. SPFA 最短路