iOS valueForKeyPath 用法
2016-11-23 00:00
405 查看
可能大家对
其实这个方法非常的强大,举个例子:
输出
相当于数组中的每个成员执行了
返回每个字符串长度的组成的数组。只要你能想到的成员实例方法都可以这么用。
如果你觉得这个方法就这么点功能,那就错了。还是举具体的例子
或者指定输出类型
name,
w,
jimsa,
aa
)
直接得到字典中
同样可以嵌套使用,先剔除
打印
(
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中 valueForKeyPath常用用法
- iOS 数组使用 valueForKeyPath:计算求和、平均值、最大、最小
- 【iOS开发-60】案例学习:多组数据的tableView设置、添加右側组索引、多层数据模型设置以及valueForKeyPath
- iOS开发中setObject:ForKey和setValue:ForKey的用法和区别
- 【iOS开发-60】案例学习:多组数据的tableView设置、增加右侧组索引、多层数据模型设置以及valueForKeyPath
- IOS valueForKeyPath
- keyPathForValuesAffectingValueForKey ios开发 kvo相关
- valueForKeyPath的用法(本篇内容是拷贝别人的文章,因为不能转载,又感觉写的很好,所以复制了,希望作者不要见怪)
- valueForKeyPath常用用法
- KVC 中的 valueForKeyPath 高级用法
- ios Array 数组的valueForkeypath 快速的处理以及数组的拆分
- iOS KVC valueForKeyPath学习心得
- iOS 监听控件某个属性的改变observeValueForKeyPath
- iOS valueForKeyPath使用与感悟
- ios-day06-03(UITableView的索引条、一个对象作为另一个对象的属性、valueForKey和valueForKeyPath的区别)
- valueForKeyPath的使用
- IOS开发之——objectForKey与valueForKey在NSDictionary中的差异
- iOS.KVC.setValue:forKey:
- KVO 接收变更通知 observeValueForKeyPath:ofObject:change:context:
- IOS开发之——objectForKey与valueForKey在NSDictionary中的差异