博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用KVC的方式更方便地获取数组中对象的属性的最值平均值等
阅读量:5753 次
发布时间:2019-06-18

本文共 3862 字,大约阅读时间需要 12 分钟。

直接上代码 输出结果也在相应的代码里标注出来了

1 //main.m文件 2 #import 
3 #import "Student.h" 4 5 int main(int argc, const char * argv[]) { 6 @autoreleasepool { 7 8 NSMutableArray
*_studentArrM; 9 NSMutableArray
*_studentArrMTest;10 11 _studentArrM = [NSMutableArray array];12 _studentArrMTest = [NSMutableArray array];13 14 Student *s1 = [Student studentWithNum:001 chinese:90.0 math:96.0 english:100.0];15 Student *s2 = [Student studentWithNum:002 chinese:90.0 math:100.0 english:96.0];16 Student *s3 = [Student studentWithNum:003 chinese:100.0 math:90.0 english:96.0];17 18 [_studentArrM addObject:s1];19 [_studentArrM addObject:s2];20 [_studentArrM addObject:s3];21 22 double mathAvg = [[_studentArrM valueForKeyPath:@"@avg.math"]doubleValue];23 double mathMax = [[_studentArrM valueForKeyPath:@"@max.math"]doubleValue];24 double mathMin = [[_studentArrM valueForKeyPath:@"@min.math"]doubleValue];25 double mathSum = [[_studentArrM valueForKeyPath:@"@sum.math"]doubleValue];26 NSLog(@"数学平均分%f 数学最高分%f 数学最低分%f 所有人的数学总分%f",mathAvg,mathMax,mathMin,mathSum);27 28 /*29 输出的内容为:数学平均分95.333333 数学最高分100.000000 数学最低分90.000000 所有人的数学总分286.00000030 31 提示:有兴趣的话可以自己多测试几组数据32 */33 34 //接下来试着处理一下数组中的对象的是否有重复的问题35 //测试需要我们可以再次给可变数组添加一个重复的对象36 [_studentArrM addObject:s2];37 [_studentArrM addObject:s2];38 39 NSArray *arrDistinct = [_studentArrM valueForKeyPath:@"@distinctUnionOfObjects.num"];40 NSArray *arrUnion = [_studentArrM valueForKeyPath:@"@unionOfObjects.num"];41 42 NSLog(@"DistinctArray %@ \n UnionArray %@",arrDistinct,arrUnion);43 /*44 输出的内容为:45 DistinctArray (46 3,47 2,48 149 )//提示:没有重复的所有值50 UnionArray (51 1,52 2,53 3,54 2,55 256 )//提示:有重复的所有值57 */58 59 //为了处理 多个数组 中的重复值的情况再次添加一个一个对象到测试数组60 [_studentArrMTest addObject:s2];61 62 NSLog(@"%@",[@[_studentArrM,_studentArrMTest] valueForKeyPath:@"@distinctUnionOfArrays.num"]);63 NSLog(@"%@",[@[_studentArrM,_studentArrMTest] valueForKeyPath:@"@unionOfArrays.num"]);64 /*65 输出的内容为66 (3,67 2,68 169 )//提示:没有重复的所有值70 71 (1,72 2,73 3,74 2,75 2,76 277 )//提示:有重复的所有值78 79 */80 }81 return 0;82 }

 

//Student.h文件 #import 
@interface Student : NSObject/** 学号 */@property (nonatomic,assign)int num;/** 语文成绩 */@property (nonatomic,assign)double chinese;/** 语文成绩 */@property (nonatomic,assign)double math;/** 语文成绩 */@property (nonatomic,assign)double english;- (instancetype)initWithNum:(int)num chinese:(double)chinese math:(double)math english:(double)english;+ (instancetype)studentWithNum:(int)num chinese:(double)chinese math:(double)math english:(double)english;
1 //Student.m文件 2 #import "Student.h" 3  4 @implementation Student 5  6 - (instancetype)initWithNum:(int)num chinese:(double)chinese math:(double)math english:(double)english{ 7      8     self = [super init]; 9     if(self){10         _num = num;11         _chinese = chinese;12         _math = math;13         _english = english;14     }15     return self;16     17     18     19 }20 21 22 + (instancetype)studentWithNum:(int)num chinese:(double)chinese math:(double)math english:(double)english{23     24     return [[Student alloc]initWithNum:num chinese:chinese math:math english:english];25     26 }27 28 @end

 

 

转载于:https://www.cnblogs.com/ITCoderW/p/6072121.html

你可能感兴趣的文章
SCCM的证书配置PKI
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>
CString、Char* ,char [20]、wchar_t、unsigned short转化
查看>>
从案例学RxAndroid开发(上)
查看>>
Redis学习手册(内存优化)
查看>>
浅尝TensorFlow on Kubernetes
查看>>
springboot系列十 Spring-Data-Redis
查看>>
Confluence 6 注册外部小工具
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
linux 死机分析
查看>>
BOM
查看>>
LeetCode:Nim Game - 尼姆博弈
查看>>
iOS: Block的循环引用
查看>>
mysql实战02 | 日志系统:一条SQL更新语句是如何执行的?
查看>>
测试九 赛后感受
查看>>
ECC椭圆曲线详解(有具体实例)
查看>>
关于WechatApp学习总结
查看>>
Linux常见命令(二)
查看>>
document.write()的用法和清空的原因
查看>>