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结合起来的用法,做一个简单的类浏览器. 一: ...
随机推荐
- mongodb group操作 以及管道 aggregate 分组排序分页
分组获取数据: db.express_info.group({ "key":{"express_code":true}, "initial" ...
- 通过ZwQuerySystemInformation获取EPROCESS
google一下,发现很多都是直接通过ZwQuerySystemInformation通过11号获取进程结构SYSTEM_PROCESS_INFORMATION,对于详细的进程信息表达不够.所以想要通 ...
- webservice接口与HTTP接口学习笔记
一.webservice 的概念 Web 是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术.Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作 ...
- iOS开发-UIImageView高效设置Radius
圆角的设置在iOS中随处可见,开发的时候也很方便,但是有的时候如果一个页面有大量的需要设置圆角的图片,容易产生性能问题,UIImageView ios9.0之前设置圆角是会产生离屏渲染的,9.0之后不 ...
- windows php7 安装 mongodb 扩展
1. 打开phpinfo 查看 nts(非线程) 还是 ts (线程),然后查看操作位数 注: 86 等于 32 位 2. 下载对应的版本的php_mongodb.dll 文件下载链接: pecl m ...
- 树莓派(RespberryPi)安装手记
购买了两台树莓派,显示器接口是HDMI的,所以需要HDMI高清线连接到显示器,再加上SD卡做硬盘以及无线USB-WIFI,就可以玩一玩树莓派这个小东西了.以下是安装手记. 首先是制作“启动光盘”,其实 ...
- redis 基本信息查询
在客户端可以用telnet命令 telnet ip port 再输入info 返回如下信息:
- ShardedJedisPool的使用
package com.test; import java.util.ArrayList; import java.util.List; import redis.clients.jedis.Jedi ...
- ASP.NET MVC 4 简介
介绍 使用Visual Studio 2010开发的话,首先需要安装MVC4,可以参考另一篇文章 进行安装. ASP.NET MVC 运行流程 (Clinet) Http Request 客户端发起 ...
- 利用 Express 托管静态文件
通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片.CSS.JavaScript 文件等. 将静态资源文件所在的目录作为参数传递给 express.stati ...