- (id)valueForKeyPath:(NSString *)keyPath 用法总结
2016-01-13 23:07
399 查看
可能大家对
其实这个方法非常的强大,举个例子:
输出
相当于数组中的每个成员执行了
返回每个字符串长度的组成的数组。只要你能想到的成员实例方法都可以这么用。
如果你觉得这个方法就这么点功能,那就错了。还是举具体的例子
或者指定输出类型
直接得到字典中
同样可以嵌套使用,先剔除
打印 ( 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;要方便很多
相关文章推荐
- [UIImage resizableImageWithCapInsets:] 使用方法
- Java集合:队列: Queue
- IBM Bluemix
- 设计模式之Builder模式
- WebKit之Chromium的UI绘制流程初探
- WPF:Provide value on 'System.Windows.Baml2006.TypeConverterMarkupExtension'
- Windows获取分区的UUID
- UITextField右边设置图片,以及UITextField全解
- <compilation debug="true" targetFramework="4.5"> 报错解决方案
- leetcode 58、Length of Last Word;59、Spiral Matrix II ;60、Permutation Sequence
- 【SAP UI】PBO和PAI
- UITabelView图片加 label 显示
- Android UI-仿微信底部导航栏布局
- codeforces 235C Cyclical Quest
- UIView的alpha、hidden、opaque 深入
- 给UIView添加背景图片的方法
- UITextField修改placeHolder颜色
- Android UI性能优化实战 识别绘制中的性能问题
- iOS 【UIKit-简单抽屉效果】
- Quicksum