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程序员面试中的多线程问题1
转自:http://blog.jobbole.com/18571/ 很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework), 理解 ...
- 启明星系统安装教程(如何在windows2012里配置IIS)
(1)安装IIS 因为在windows2012里,安装数据库,IIS部分组件都需要.NET3.5,而默认windows2012安装时,并不会把此组件复制到电脑里 导致,后期要安装.NET3.5还需要安 ...
- python实战--csdn博客专栏下载器
打算利用业余时间好好研究Python的web框架--web.py,深入剖析其实现原理,体会web.py精巧之美.但在研究源码的基础上至少得会用web.py.思前想后,没有好的Idea,于是打算开发一个 ...
- postgresql 函数获取多个字段的数字大小值
1.GREATEST(n1,n2,n3,..........) 获取最大值 testdb=#SELECT GREATEST(,,,,,,,,,); +------------------------- ...
- java中常用jar包
commons-io.jar:可以看成是java.io的扩展,用来帮助进行IO功能开发.它包含三个主要的领域:Utilityclasses-提供一些静态方法来完成公共任务.Filters-提供文件过滤 ...
- 用命令让vbox的虚拟硬盘文件转换成vmware的vmdk
VirtualBox的生成备份功能只是个系统还原点 这个生成备份功能备份速度非常快,其实它并不是备份,而是相当于xp系统中的建立系统还原点.但是要注意的是如果你的虚拟硬盘文件(***.vdi)在别的V ...
- Web前端,HTML5开发,前端资源,前端网址,前端博客,前端框架整理 - 转改
Web前端/H5开发,前端资源,前端网址,前端博客,前端框架整理 综合类 前端知识体系 前端知识结构 Web前端开发大系概览 Web前端开发大系概览-中文版 Web Front-end Stack v ...
- C#:CeF遇到的问题
2.CSharp与JS交互问题: 1)在 继承CefRenderProcessHandler的子类中重载OnWebKitInitialized()函数,注册JS类 2)在 继承CefApp的子类中创建 ...
- asp.net C# int 类型在32/64位环境下取值范围无变化
最近在学习中突然想到,我在64位环境下,int取值范围是否有变化?为了检测这个结果,我做了以下这个测试:1.环境:win7旗舰版64位+vs2010 sp1(版本号:10.0.40219.1SP1Re ...
- BigDecimal四舍五入保留两位小数
import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public c ...