iOS中 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 = @{@"dict1":@{@"dict2":@{@"name":@"lishi",@"info":@{@"age":@"12"}}}};
id res = [dict1 valueForKeyPath:@"dict1.dict2.name"];//(http://dict1.dict2.name/)
NSLog(@"res = %@",res);// 输出lishi

4、删除重复的数据

NSArray *array = @[@"qq", @"wechat", @"qq", @"msn", @"wechat"];
NSArray *deleltNewA = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];
NSLog(@"deleltNewA = %@",deleltNewA);// 输出( qq, wechat,  msn)

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

NSArray *array = @[@{@"name" : @"xiaoming",
         @"code" : @1},
         @{@"name": @"judy",
         @"code" : @2},
         @{@"name": @"judy",
         @"code" : @3},
         @{@"name": @"xiaohua",
         @"code" : @4}];
NSArray *deleltNewA = [array valueForKeyPath:@"@distinctUnionOfObjects.name"];
NSLog(@"deleltNewA = %@",deleltNewA);// 输出(judy, xiaohua, xiaoming);

6、改变 UITextfield 的 placeholder 的颜色

[addressTextField setValue:[UIColor redColor] forKeyPath:@”_placeholderLabel.textColor”];
比起重写 - (void)drawPlaceholderInRect:(CGRect)rect; 要方便太多!

总结

以上所述是小编给大家介绍的iOS中 valueForKeyPath常用用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • iOS中valueForKeyPath的常用方法法示例

    前言 可能很多人对-(nullableid)valueForKeyPath:(NSString*)keyPath;这个方法不是很理解,实际上,这可以扩展到KVC中的高级用法上去.该方法非常强大.下面就来给大家详细介绍iOS中valueForKeyPath的常用方法,话不多说了,来一起看看详细的介绍吧 valueForKeyPath的常用方法 1.valueForKeyPath可以获取数组中的最小值.最大值.平均值.求和.代码如下: NSArray *array = @[@10, @23, @43

  • iOS中 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 valueF

  • iOS中UIScrollerView的用法及基于AotoLayout的控件悬停

    UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容.Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).还有一个UIWebView,尽管那不是UIScrollView的直接子类,它适用UIScrollView去显示网页内容contentsize是内容的宽和高,contentsize.width是内容的宽度,cont

  • iOS中UIActivityIndicatorView的用法及齿轮等待动画实例

    基础 @派生自UIView,所以它是视图,也可以附着在视图上. 一.创建 复制代码 代码如下: // 因为UIActivityIndicatorView的大小是固定的,可以直接设置它.center UIActivityIndicatorView* activityIndicatorView = [ [ UIActivityIndicatorView alloc ] initWithFrame:CGRectMake(250.0,20.0,30.0,30.0)]; 二. 属性设置风格 复制代码 代码

  • ios中Deep Linking实例分析用法

    在 iOS 中,deep linking 实际上包括 URL Scheme.Universal Link.notification 或者 3D Touch 等 URL 跳转方式.应用场景比如常见的通知,社交分享,支付,或者在 webView 中点击特定链接在 app 中打开并跳转到对应的原生页面. 用的最多也是最常用的是通过 Custom URL Scheme 来实现 deep linking.在 application:openURL:sourceApplication:annotation

  • iOS中NSArray数组常用处理方式

    1. 数组的常用处理方式 //--------------------不可变数组 //1.数组的创建 NSString *s1 = @"zhangsan"; NSString *s2 = @"lisi"; NSString *s3 = @"wangwu"; //(1) NSArray *array1 = [[NSArray alloc] initWithObjects:s1,s2,s3, nil]; NSLog(@"%@",a

  • iOS中sqlite数据库的原生用法

    在iOS中,也同样支持sqlite.目前有很多第三方库,封装了sqlite操作,比如swift语言写的SQLite.swift.苹果官网也为我们封装了一个框架:CoreData. 它们都离不开Sqlite数据库的支持. 本文主要介绍下,如何在swift中使用原生的sqlite的API. 在Xcode中引入sqlite API 新建一个swift项目后,我们需要让项目引入sqlite的动态链接库: 1.项目配置界面,选择Build Phases 2.点开Link Binary With Libra

  • iOS中常用设置返回按钮

    //添加返回按钮 -(void)backBtn{ UIButton *backBtn=[[UIButton alloc]initWithFrame:CGRectMake(0, 10, 60, 20)]; [backBtn setTitle:@"返回" forState:UIControlStateNormal]; backBtn.titleLabel.font=[UIFont systemFontOfSize:12]; backBtn.imageEdgeInsets=UIEdgeIns

  • C#中一些字符串操作的常用用法

    C#中一些字符串操作的常用用法 //获得汉字的区位码 byte[]array=newbyte[2]; array=System.Text.Encoding.Default.GetBytes("啊"); inti1=(short)(array[0]-''\0''); inti2=(short)(array[1]-''\0''); //unicode解码方式下的汉字码 array=System.Text.Encoding.Unicode.GetBytes("啊"); i

  • React-Native中一些常用组件的用法详解(一)

    前言 本文为大家介绍一下React-Native中一些常用的组件,由于对ES6的语法并没有完全掌握,这里暂时用ES5和ES6混用的语法. View组件 View是一个支持Flexbox布局.样式.一些触摸处理.和一些无障碍功能的容器,并且它可以放到其它的视图里,也可以有任意多个任意类型的子视图. View的设计初衷是和StyleSheet搭配使用,这样可以使代码更清晰并且获得更高的性能.尽管内联样式也同样可以使用. View的常用样式设置 flex布局样式 backgroundColor:背景颜

随机推荐