| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
BernardoCha
9年前发布

高效开发iOS系列 -- 那些不为人知的KVC

来自: http://www.jianshu.com/p/a6a0abac1c4a

valueForKeyPath

本篇来讲解一下那些不为人知,也经常被忽略掉,并且很实用的KVC干货小技巧

获取数组里的,最大、最小、平均、求和

 NSArray *array = @[@"1",@"3",@2,@9.5,@"1.2"];   NSNumber *sum = [array valueForKeyPath:@"@sum.floatValue"];   NSNumber *avg = [array valueForKeyPath:@"@avg.floatValue"];   NSNumber *max = [array valueForKeyPath:@"@max.floatValue"];   NSNumber *min = [array valueForKeyPath:@"@min.floatValue"];    NSLog(@"sum:%@",sum);   NSLog(@"avg:%@",avg);   NSLog(@"max:%@",max);   NSLog(@"min:%@",min);

删除重复数据

NSArray *array = @[@"name", @"w", @"aa", @"zxp", @"aa"]; //返回的是一个新的数组   NSArray *newArray = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];   NSLog(@"%@", newArray);

同样可以嵌套使用,先剔除name对应值的重复数据再取值

NSArray *array = @[ @{@"title":@"zxp",@"name":@"zhangxiaoping"}, @{@"title":@"zxp2",@"name":@"zhangxiaoping2"}, @{@"title":@"zxp",@"name":@"zhangxiaoping3"}, @{@"title":@"zxp",@"name":@"zhangxiaoping"}];  //根据name字段,来进行重复删除。  NSArray *newArray = [array valueForKeyPath:@"@distinctUnionOfObjects.name"];  //如果要根据title字段来删除重名的写法为`@distinctUnionOfObjects.title`   NSLog(@"%@", newArray);  /*  print:( zhangxiaoping3, zhangxiaoping2, zhangxiaoping)是一个字符串数组*/

进行实例方法的调用

NSArray *array = @[@"name", @"w", @"aa", @"ZXPing"];   NSLog(@"%@", [array valueForKeyPath:@"uppercaseString"]);

相当于数组中的每个成员执行了 uppercaseString 方法,然后把返回的对象组成一个新数组返回。既然可以用 uppercaseString 方法,那么NSString的其他方法也可以,比如 [array valueForKeyPath:@"length"] 。当然,其他对象的实例方法也可以以此类推来进行调用~!

</div>

 本文由用户 BernardoCha 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1453518693230.html
iOS开发 Objective-C开发