高效开发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"]

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

::selection

改变浏览器文字选中背景 ::selection CSS的伪类选择器 只有一小部分CSS属性可以用于::selection选择器: color, background-color, cursor, outline, text-decoration, text-emphasis-color和text-shadow。 要特别注意的是,background-image会如同其他属…

B00013 字符串哈希函数

哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。 哈希函数用途广泛,这个程序给出了绝大多数常用的哈希函数。源程序来自:哈希算法_百度百科。 程序员可以根据自己的需要取用这些代码。 需要注意的…

*hdu5632Rikka with Array

$n \leq 10^300$&#xff0c;问所有$i<j$且$f_i>f_j$的$(i,j),1 \leq i \leq n,1 \leq j \leq n$数量。对某个数取模。 $f(a,b,0/1/2/3)$--前$a$位&#xff0c;两个数相差$b$个1&#xff0c;$b$可以为负数&#xff0c;然后四种情况&#xff1a;$i<j<n$&#xff0c;…

java正则表达式提取字符串中的数字

http://stackoverflow.com/questions/2367381/extract-numbers-from-a-string-java Pattern p Pattern.compile(\\d); 使用这个会有空字符串出现 Pattern p Pattern.compile("-?\\d"); 这是OK,转载于:https://www.cnblogs.com/pengxinglove/p/4476634.html

python3中的正则模块

本文引至: 正则模块 与正则最相关的应该算是字符串, 但是,在内置的py的str类型中, 并没有内置的正则方法. 我们可以看一下str的基本方法:我觉得最有用的,应该算find,len,split,join 这4个方法了. 但对于字符串操作来说, 这简直too too simple. 所以, py提供了我们一个Re 模块, …

wamserver怎么把mysql找回来_将php连接wampserver自带的MySQL数据库 所遇到各种问题解决办法...

将php连接到MySQL数据库的方法有很多&#xff0c;在这里我使用的是mysqli_connect方法&#xff0c;此博客所解答的问题汇总&#xff1a;1.wampserver服务器离线但图标为正常绿&#xff1b;2.wampserver 2/3服务正常运行&#xff0c;3个服务分别是哪些&#xff1f;3.wampserver …

Oracle11.2.0.4 windows32+64bit opatch工具 11.2.0.0 百度云盘下载

2016年6月3日最新11GR2版本11.2.0.0的opatch工具&#xff08;版本号&#xff1a;P6880880&#xff09;FOR Windows 3264bit环境 版本&#xff1a;Windows 32BIT 11G R2版本11.2.0.0 opatch工具 p6880880下载地址 地址&#xff1a;链接&#xff1a;http://pan.baidu.com/s/1cqP6…

Linux防火墙iptables基础详解

一、前言防火墙&#xff0c;其实说白了讲&#xff0c;就是用于实现Linux下访问控制的功能的&#xff0c;它分为硬件的或者软件的防火墙两种。无论是在哪个网络中&#xff0c;防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作&#xff0c;这就…

问题总结2015/05/05

1、第三方提供的库不能使用。 调查方法&#xff1a;差分编译&#xff0c;对比连接后和编译后的差分情况&#xff1b;Debug单步调试&#xff0c;定位出错代码&#xff1b;由于是第三方库不能使用的原因&#xff0c;反编译辅助调查。 调查结果&#xff1a;本机编译后的R文件中的资…

php mysql备份还原类_PHP实现MYSQL备份还原

/*** mysql备份*/classMysqlBackup {function __construct($filename, $config) {$this->setFile($filename);$this->con($config);}/*** 输出信息*/private function info($code, $msg) {$json json_encode(array(code > $code, msg > $msg),JSON_UNESCAPED_UNIC…

一个屌丝程序猿的人生(二十七)

“林萧&#xff0c;妈回去了。你一个人在北京照顾好自己&#xff0c;缺钱了给我打电话。”韩霞放下车窗&#xff0c;面色担忧的跟林萧告别。方才来宋刚学校之前&#xff0c;武达浪已经独自一人离开&#xff0c;如今事情已经办妥&#xff0c;韩霞也要赶回老家去了。 “放心吧&am…

采用HttpModules来重写URLS

首先写一个处理URLs重写的类&#xff0c;并且这个类必须继承IHttpHandler接口&#xff0c;以博客园的程序为例&#xff1a; public class UrlReWriteModule : System.Web.IHttpModule { public void Init(HttpApplication context) { context.BeginRequest new EventHandler(c…

js的下拉刷新和上拉加载,基于iScroll v4.2.5

html部分 <div id"wrapper" style"height: 100%"><div id"scroller"><div id"pullDown"></div><ul id"thelist"><li>我是三冰 1</li><li>我是三冰 2</li><li>…

mysql gtid坑_通过mysqlbinlog --skip-gtids恢复后再备份可能造成的坑

版本[rootuz22199 backup]# innobackupex --versioninnobackupex version 2.4.8 Linux (x86_64) (revision id: 97330f7)[rootuz22199 backup]# mysql -e"select version"------------| version |------------| 5.7.18-log |------------源库表结构与数据rootmysqldb…

SqlHelper模板

在实际开发中&#xff0c;我们不会直接使用拼写SQL语句的方法进行数据库操作&#xff0c;而是使用参数化的方法进行数据库操作&#xff0c;这样做的好处很多&#xff0c;不仅提高了程序的健壮性&#xff0c;同时也避免的SQL注入的问题。在这里&#xff0c;笔者为初学者提供一个…

164. Maximum Gap

题目&#xff1a;Given an unsorted array, find the maximum difference between the successive elements in its sorted form. Try to solve it in linear time/space. Return 0 if the array contains less than 2 elements. You may assume all elements in the array are…

java声明和初始化数组_Java 中初始化数组

数组是一种有用的数据类型&#xff0c;用于管理在连续内存位置中建模最好的集合元素。下面是如何有效地使用它们。-- Chris Hermansen&#xff08;作者&#xff09;有使用 C 或者 FORTRAN 语言编程经验的人会对数组的概念很熟悉。它们基本上是一个连续的内存块&#xff0c;其中…

Java第二次实验报告——Java面向对象程序设计

北京电子科技学院&#xff08;BESTI&#xff09;实 验 报 告课程名称&#xff1a;java程序设计实验 班级&#xff1a;1352 姓名&#xff1a;洪韶武 学号&#xff1a;20135219成绩&#xff1a; 指导教师&#xff1a;娄嘉鹏…

IOS 多线程04-GCD详解 底层并发 API

IOS 多线程04-GCD详解 底层并发 API 注&#xff1a;本人是翻译过来&#xff0c;并且加上本人的一点见解。 前言 想要揭示出表面之下深层次的一些可利用的方面。这些底层的 API 提供了大量的灵活性&#xff0c;随之而来的是大量的复杂度和更多的责任。在我们的文章常见的后台实践…

类初始化的一道面试题

下面的代码counter1,counter2输出的结果是什么&#xff0c;把第10行放到12行后面&#xff0c;ounter1,counter2输出的结果是什么&#xff1f; 为什么&#xff1f; 1 public class Test {2 public static void main(String[] args) {3 System.out.println(Singleton…