欢迎来到代码驿站!

iOS代码

当前位置:首页 > 移动开发 > iOS代码

iOS中valueForKeyPath的常用方法法示例

时间:2021-04-28 08:04:20|栏目:iOS代码|点击:

前言

可能很多人对-(nullableid)valueForKeyPath:(NSString*)keyPath;这个方法不是很理解,实际上,这可以扩展到KVC中的高级用法上去。该方法非常强大。下面就来给大家详细介绍iOS中valueForKeyPath的常用方法,话不多说了,来一起看看详细的介绍吧

valueForKeyPath的常用方法

1、valueForKeyPath可以获取数组中的最小值、最大值、平均值、求和。代码如下:

NSArray *array = @[@10, @23, @43, @54, @7, @17, @5];

+ (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(@"%fn%fn%fn%f",sum,avg,max,min);
 return [NSString stringWithFormat:@"%f",sum];
}

2、valueForKeyPath可以获取数组中相同key的元素

如下所示:

NSArray *arr = @[@{@"city":@"beijing",@"person":@{@"name":@"zhangsan"}},@{@"city":@"chengdu"}];

[arr valueForKeyPath:@"city"] 可以获取到city数组 @[@"beijing",@"chengdu"]

3、valueForKeyPath 可以使用. 来一层一层向下索引,当多个字典层级时,取子层级中的属性就非常简单了

NSDictionary *dict1 = @{@"dic1":@{@"dic2":@{@"name":@"lisi",@"info":@{@"age":@"12"}}}};

id res = [dict1 valueForKeyPath:@"[dict1.dict2.name](http://dict1.dict2.name/)"];

4、删除重复的数据

NSArray *array = @[@"qq", @"wechat", @"qq", @"msn", @"wechat"];
[array valueForKeyPath:@"@distinctUnionOfObjects.self"];

5、嵌套使用(先删除对应值的重复数据再取值)

NSArray *array = @[@{@"name" : @"xiaoming",
     @"code" : @1},
     @{@"name": @"judy",
     @"code" : @2},
     @{@"name": @"judy",
     @"code" : @3},
     @{@"name": @"xiaohua",
     @"code" : @4}];
[array valueForKeyPath:@"@distinctUnionOfObjects.name"];

6、改变 UITextfield 的 placeholder 的颜色

[addressTextField setValue:[UIColor redColor] forKeyPath:@”_placeholderLabel.textColor”];

比起重写 - (void)drawPlaceholderInRect:(CGRect)rect; 要方便太多!

总结

上一篇:iOS利用手机摄像头测心率

栏    目:iOS代码

下一篇:检测iOS设备是否越狱的方法

本文标题:iOS中valueForKeyPath的常用方法法示例

本文地址:http://www.codeinn.net/misctech/110149.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有