IOS valueForKeyPath
2015-05-30 12:42
337 查看
摘录自:26152 http://www.thinksaas.cn/group/topic/347021/
可能大家对
输出
相当于数组中的每个成员执行了
返回每个字符串长度的组成的数组。只要你能想到的成员实例方法都可以这么用。
如果你觉得这个方法就这么点功能,那就错了。还是举具体的例子
或者指定输出类型
直接得到字典中
同样可以嵌套使用,先剔除
打印 ( cookeee, jim, jbos )
比起重写
可能大家对
- (id)valueForKeyPath:(NSString *)keyPath方法不是很了解。 其实这个方法非常的强大,举个例子:
NSArray *array = @[@"name", @"w", @"aa", @"jimsa"]; NSLog(@"%@", [array valueForKeyPath:@"uppercaseString"]);
输出
( NAME, W, AA, JIMSA )
相当于数组中的每个成员执行了
uppercaseString方法,然后把返回的对象组成一个新数组返回。既然可以用
uppercaseString方法,那么NSString的其他方法也可以,比如
[array valueForKeyPath:@"length"]
返回每个字符串长度的组成的数组。只要你能想到的成员实例方法都可以这么用。
如果你觉得这个方法就这么点功能,那就错了。还是举具体的例子
对NSNumber数组快速计算数组求和、平均数、最大值、最小值
NSArray *array = @[@1, @2, @3, @4, @10]; NSNumber *sum = [array valueForKeyPath:@"@sum.self"]; NSNumber *avg = [array valueForKeyPath:@"@avg.self"]; NSNumber *max = [array valueForKeyPath:@"@max.self"]; NSNumber *min = [array valueForKeyPath:@"@min.self"];
或者指定输出类型
NSNumber *sum = [array valueForKeyPath:@"@sum.floatValue"]; NSNumber *avg = [array valueForKeyPath:@"@avg.floatValue"]; NSNumber *max = [array valueForKeyPath:@"@max.floatValue"]; NSNumber *min = [array valueForKeyPath:@"@min.floatValue"];
剔除重复数据
NSArray *array = @[@"name", @"w", @"aa", @"jimsa", @"aa"]; NSLog(@"%@", [array valueForKeyPath:@"@distinctUnionOfObjects.self"]);
打印
( name, w, jimsa, aa )对NSDictionary数组快速找出相应key对的值
NSArray *array = @[@{@"name": @"cookeee",@"code": @1}, @{@"name": @"jim",@"code": @2}, @{@"name": @"jim",@"code": @1}, @{@"name": @"jbos",@"code": @1}]; NSLog(@"%@", [array valueForKeyPath:@"name"]);
直接得到字典中
namekey对应的值组成的数组,显然比循环取值再加入到新数组中方便快捷
( cookeee, jim, jim, jbos )
同样可以嵌套使用,先剔除
name对应值的重复数据再取值
NSArray *array = @[@{@"name": @"cookeee",@"code": @1}, @{@"name": @"jim",@"code": @2}, @{@"name": @"jim",@"code": @1}, @{@"name": @"jbos",@"code": @1}]; NSLog(@"%@", [array valueForKeyPath:@"@distinctUnionOfObjects.name"]);
打印 ( cookeee, jim, jbos )
改变UITextfiedl的placeholder的颜色
[searchField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];
比起重写
- (void)drawPlaceholderInRect:(CGRect)rect;要方便很多
相关文章推荐
- iOS开发UI基础—09UIImageView动画示例之汤姆猫程序
- iOS开发UI基础—08应用程序管理之xib的简单使用
- iOS开发UI基础—07应用程序管理之字典转模型
- iOS开发UI基础—06九宫格算法示例
- IOS开发UI基础—05(延迟加载)懒加载
- iOS开发UI基础—04UIButton练习之图片浏览器
- zoj 2966 Build The Electric System 最小生成树
- iOS开发UI基础—03transframe属性(形变)
- iOS开发UI基础—02手写控件,frame,center和bounds属性
- [福利]国内首篇利用freetype的跨平台truetype字体真正轮廓(非位图)获取(带完整qt工程代码)-秒杀GetGlyphOutline
- Hibernate-org.hibernate.QueryException: could not resolve property: code of:
- volley 之GsonRequest
- iOS开发UI基础—01Button
- Mysql-提示java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 7 to TIMESTAMP.
- VUE.JS学习笔记(v-model、Handling Forms)
- 网页文本编辑器UEditor.1.4.3 jsp使用配置
- UIScrollView+UIpageControl实现图片的循环滚动切换
- arduino最版!!!!1.6.4官方正版
- arduino的介绍
- android -- 蓝牙 bluetooth (五)接电话与听音乐