ios开发之--valueForKeyPath的用法
1、获取数组中的平均值,最大值,最小值,总和,代码如下:
NSArray *ary = @[@,@,@,@,@,@,@]; [self caculateArray:ary]; -(NSString *)caculateArray:(NSArray *)array
{
CGFloat sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];
CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];
CGFloat max = [[array valueForKeyPath:@"@max.floatValue"] floatValue];
CGFloat min = [[array valueForKeyPath:@"@min.floatValue"] floatValue];
NSLog(@"sum is \n %.f-\n-%.f-\n-%.f-\n-%.f",sum,avg,max,min);
return [NSString stringWithFormat:@"%f",sum];
}
打印如下;

2、获取数组中相同key的元素,代码如下:
NSArray *ary1 = @[
@{@"city":@"beijing",@"person":@{@"name":@"libojue"}},
@{@"city":@"zhengzhou"}
];
[self returnAry:ary1];
-(NSArray *)returnAry:(NSArray *)array
{
return [array valueForKeyPath:@"city"];
}
打印如下:

3、也是最重要的,我们平常在取最里层的属性时,需要遍历然后根据index,进行取,效率低下,用valueForKeyPath的话,可以一层一层的向下索引,就很简单了,代码如下:
NSDictionary *dict = @{
@"data":@{
@"data2":@{
@"name":@"lily",
@"info":@{
@"age":@"",
@"sex":@""
}
}
}
};
[self returndict:dict];
-(id)returndict:(NSDictionary *)dict
{
return [dict valueForKeyPath:@"data.data2.name"];
}
打印如下:

4、去除数组里面重复的元素,代码如下;
NSArray *ary2 = @[@"a",@"a",@"b",@"a1",@"c",@"d"];
[ary2 valueForKeyPath:@"@distinctUnionOfObjects.self"];
打印如下:

另一种方法, containsObject方法,代码如下:
NSArray *dataArray = @[
@"a",@"b",@"cc",
@"a",@"b1",@"c1",
@"a"];
NSMutableArray *listAry = [[NSMutableArray alloc]init];
for (NSString *str in dataArray) {
if (![listAry containsObject:str]) {
[listAry addObject:str];
}
}
NSLog(@"%@",listAry);
以上方法也可以去除数组里面的相同元素。
5、嵌套使用,删除书里面对应key的重复数据,然后再完成取值,代码如下:
NSArray *ary3 = @[
@{@"name":@"jack",@"age":@""},
@{@"name":@"lucy",@"age":@""},
@{@"name":@"jack",@"age":@""},
@{@"name":@"joe",@"age":@""}
];
[ary3 valueForKeyPath:@"@distinctUnionOfObjects.name"];
打印如下:

6、改变UITextField的placeholder的颜色,代码如下:
[self.userNameTF setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
效果如下:

仅做记录,上面所有方法亲测有效!
ios开发之--valueForKeyPath的用法的更多相关文章
- IOS开发 REST请求 ASIHTTPRequest用法
ASIHTTPRequest类库简介和使用说明 官方网站: http://allseeing-i.com/ASIHTTPRequest/ .可以从上面下载到最新源码,以及获取到相关的资料. 使用iOS ...
- iOS开发——MJExtension复杂数组用法
最近在看MJExtension的Demo,发现了一个plist文件直接转数组模型的方法.以前研究过但是浅尝辄止没有解决,这几天有时间,好好看了看,找到了解决办法,与大家分享. 如果大家的项目中有这种嵌 ...
- ios开发之--NSURL的用法
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/search?id=1"]; NSLog(@"schem ...
- ios开发之--sizeToFit的用法
sizeToFit :即当前视图便捷和便捷大小变化(自动根据文本大小改变自身的宽度) 代码如下: - (void)sizeToFitDemo { UILabel * label = [[UILabel ...
- iOS开发之多线程技术
本篇争取一篇讲清讲透,依然将通过四大方面清晰的对iOS开发中多线程的用法进行详尽的讲解: 一.什么是多线程 1)多线程执行原理 2)线程与进程 3)多线程的优缺点 二.我们为什么要用多线程编程技术 三 ...
- 给iOS开发新手送点福利,简述文本属性Attributes的用法
给iOS开发新手送点福利,简述文本属性Attributes的用法 文本属性Attributes 1.NSKernAttributeName: @10 调整字句 kerning 字句调整 2.NSF ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- iOS开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- ios开发入门篇(四):UIWebView结合UISearchBar的简单用法
UIWebView是ios开发中比较常用的一个控件.我们可以用它来浏览网页.打开文档等,今天笔者在这里简单介绍下UIWebView和UISearchBar结合起来的用法,做一个简单的类浏览器. 一: ...
随机推荐
- Java中使用Timer和TimerTask实现多线程
转自:http://www.bdqn.cn/news/201305/9303.shtml 摘要:Timer是一种线程设施,用于安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行,可以 ...
- CNUTCon2017全球运维技术大会(持续更新中) - 斯达克学院 - 实战驱动的 IT 教育平台 - Powered By EduSoho
CNUTCon2017全球运维技术大会(持续更新中) - 斯达克学院 - 实战驱动的 IT 教育平台 - Powered By EduSoho https://new.stuq.org/cours ...
- MongoDB的学习--索引类型和属性(转)
原文链接:MongoDB的学习--索引类型和属性 索引类型 MongDB的索引分为以下几种类型:单键索引.复合索引.多键索引.地理空间索引.全文本索引和哈希索引 单键索引(Single Field I ...
- he canvas has been tainted by cross-origin data and tainted canvases may not be exported
来自: https://ourcodeworld.com/articles/read/182/the-canvas-has-been-tainted-by-cross-origin-data-and- ...
- WIN10平板 如何设置不允许切换竖屏
点击右下角的通知,然后点击旋转锁定,即可禁止自动竖屏切换
- wzoj install
wzoj/wiki/安装指南 wzoj-judger/wiki/安装指南 安装LAMP环境 如果你不知道如何安装:DebianUbuntuArchRed Hat 安装redis缓存系统 在 Ubunt ...
- Win10更新搜狗输入法后重启输入密码蓝屏
解决办法:如果能进入安全模式,卸载搜狗输入法:不行的话(好像不行)只能重装系统:因为蓝屏后就基本开不了了!!!生气!! win10 1809 19.3月累积更新之后蓝屏:安装了搜狗输入法的win10 ...
- 使用quicklz缩小程序体积
目录 简述 压缩和解压代码 压缩代码 解压代码 将二进制文件生成C数组程序代码 简述 有一个需求是这样的,写的一个程序内置了一个很大的文件(实际就是抓取epsg.io的内容里面的epsg.io.jso ...
- Android--保持加速度传感器在屏幕关闭后运行(收集)
由于写论文需要,需要用手机加速度采集数据,关于android加速度传感器的介绍网上一抓一大把,但大多都是大同小异,跟官网文档差不多.自己写了个取加速度传感器的APK,发现数据有点不对劲,原理屏幕一关后 ...
- linux备份数据mysql
到mysql安装目录下的bin: ./mysqldump -u root -p ebuy_mgt > /home/2017backup.sql