我的简书地址: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"]

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

转载于:https://www.cnblogs.com/llguanli/p/8892164.html

高效开发iOS系列 -- 那些不为人知的KVC相关推荐

  1. 【高效开发工具系列】uTools介绍与使用

    一.基本使用 最简单的,uTools 可以作为一个程序快速启动器,支持英文.英文驼峰.中文拼音.拼音首字母来打开你的本地程序.除程序外, win10+ 和 macOS 用户还可以快速搜索并打开「控制面 ...

  2. 【高效开发工具系列】API工具

  3. 【高效开发工具系列】Windows 怎么使用 telnet

  4. 【高效开发工具系列】Windows 修改 host 文件

  5. iOS 高效开发-----实现description 方法 (续)

    在 "iOS 高效开发-----实现description 方法"这篇文章的最后,我留下了一个问题,就是,如果要给每个自定义的类覆写description方法和debugDescr ...

  6. iOS开发UINavigation系列四——导航控制器UINavigationController

    iOS开发UINavigation系列四--导航控制器UINavigationController 一.引言 在前面的博客中,我么你介绍了UINavigationBar,UINavigationIte ...

  7. iOS系列开发-版本控制工具Git的使用

    iOS系列开发-版本控制工具Git的使用 作为一个开发者,与团队之间默契的配合是很重要的,我们所写的代码在无论是在公司还是在个人来说都是一份不可随意丢弃的东西,但是如果只是单纯的开发,我们很难做到今天 ...

  8. python开发ios插件_[原创]Textobot-换个轻松高效的方式开发iOS越狱插件

    许愿:要是段老师的看雪平台能导入头条或者公众号的文章就好了. 导读 0x00.交个朋友 0x01.越狱开发 0x02.Cydia插件体系 0x03.Cydia插件开发 0x04.Textobot插件体 ...

  9. 高效编写iOS方法-小结

    本文是本人看完<高效编写iOS的52条方法>的一些小结及笔记. 第 1 条 1.使用消息结构的语言,其运行时所应执行的代码由运行环境来决定(--动态绑定):而使用函数调用的语言,则由编译器 ...

最新文章

  1. 51nod挑的部分5级题
  2. 冒泡排序 java_冒泡排序Java版本
  3. java安全编码指南之:表达式规则
  4. [Matlab]求解线性方程组
  5. OpenCV--CvMemStorage
  6. 易效能:有哪些可以高效休息的方法?
  7. doe五步法_DOE实验设计的步骤与应用
  8. 金蝶K3 webservice接口
  9. 红外hs0038接收测试代码
  10. WdatePicker开始时间与结束时间
  11. python 监控文件变化 - python watchdog模块使用方法
  12. webserver的使用
  13. java 报‘java.net.UnknownHostException:错误
  14. ML机器学习基础的编程技巧:
  15. Vue-Router给当前url添加参数时报错 Navigation Duplicated Avoided redundant navigation to current location
  16. 基于声网 iOS SDK 实现视频直播应用
  17. java 下载文件的文件名乱码_JAVA 文件下载时的文件名乱码解决
  18. bing每日壁纸_如何将Bing的每日背景用作Ubuntu壁纸
  19. MySQL数据库中插入图片
  20. Grbl代码分析 cpu-map.h

热门文章

  1. 8-python自动化-day08-进程、线程、协程篇
  2. Android RecyclerView (一) 使用完全解析
  3. 【AC自动机】【数据结构】【树】【Aho-Corasick automation】AC自动机理解(入门)...
  4. placeholder=请输入用户名(六位数字加英文字母)
  5. SQL中的事物【转】
  6. Lrc歌词-开发标准 (转)
  7. ElasticSearch、Logstash和Kiabana三个开源工具。
  8. Node.js学习之(第二章:exports和module.exports)
  9. 使用while和FOR循环分布打印字符串S='asdfer' 中的每一个元素
  10. Logic-算法-八个箱子找一个最轻的