NSArray类 、NSMutableArray类

NSArray类 、NSMutableArray类

数组创建

NSLog(@”*************************** 数组创建 ****************************”);//方式一:NSArray *arr1 = [NSArray arrayWithObject:@”jack”];NSLog(@”arr1数组元素为:%@”,arr1);// nil是数组元素结束的标记NSArray *arr2 = [NSArray arrayWithObjects:@”tom”,@”jack”, @”rose”, nil];NSLog(@”arr1数组的长度:%ld”,arr2.count);//方式二:快速创建一个NSArray对象,推荐使用NSArray *arr3 = @[@”jack”, @”rose”, @”tom”,@”lily”,@”bob”];NSLog(@”arr3数组的长度:%ld”,arr3.count);//方式三:构建一个C数组类型NSNumber* pnumber[4]={[NSNumber numberWithInt:2],[NSNumber numberWithInt:2],[NSNumber numberWithDouble:3.4f],[NSNumber numberWithChar:’a’]};NSArray* arr4=[NSArray arrayWithObjects:pnumber count:4];NSLog(@”arr4数组的长度:%ld”,arr4.count);

数组拷贝

NSLog(@”*************************** 数组拷贝 ****************************”);* copyArr=[NSArray arrayWithArray:arr4];NSLog(@”拷贝后的数组copyArr:%@”,copyArr);

数组遍历

NSLog(@”*************************** 数组遍历 ****************************”);//方式一:for (int i = 0; i<arr3.count; i++){NSLog(@”方式一遍历结果:%@”, arr3[i]);}//方式二: id obj代表着数组中的每一个元素for (id obj in arr3){NSUInteger i = [arr3 indexOfObject:obj];NSLog(@”方式二遍历结果:%ld --%@”, i, obj);}//方式三:每遍历到一个元素,就会调用一次block,并且当前元素和索引位置当做参数传给block[arr3 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){NSLog(@”方式三遍历结果:%ld ——— %@”, idx, obj);}];//方式四:(NSEnumerator快速迭代) – (NSEnumerator *)objectEnumeratorNSEnumerator* nse=arr3.objectEnumerator;NSNumber* item=nil;int j=0;while((item=nse.nextObject)!=nil){NSLog(@”方式四遍历结果:nse[%d]:%@”,j++,item);}

反向遍历

NSLog(@”***************************** 反向遍历 *****************************”);//获取一个反向迭代器(枚举器)//- (NSEnumerator *)reverseObjectEnumeratorNSEnumerator* emu =[arr3 reverseObjectEnumerator];NSString* item1=nil;while ((item1=emu.nextObject)) {NSLog(@”%@”,item1);}

数组比较

NSLog(@”***************************** 数组比较 *****************************”);NSString* str1=[NSString stringWithFormat:@”aabb”];NSString* str2=[NSString stringWithFormat:@”bbcc”];NSString* str3=@”aabb”;NSLog(@”str1_address:%p”,str1);NSLog(@”str3_address:%p”,str3);NSArray* arr=[NSArray arrayWithObjects:str1,str2,str3, nil];NSInteger index =[arr indexOfObject:str3];NSLog(@”str3 index:%ld”,index);index2=[arr indexOfObjectIdenticalTo:str3];NSLog(@”str3 index2:%ld”,index2);

动态数组

: * name;@property NSString* stid;@property NSString* schoolName;- (void)printMe;+ (instancetype)studentWithData:(NSString *)name withStid:(NSString *)stid withSchoolName:(NSString *)schoolName;@end@synthesize name,stid,schoolName;- (void)printMe{NSLog(@”学号:%@,姓名:%@,学校:%@”,stid,name,schoolName); //访问成员变量,效率高//NSLog(@”学号:%@,姓名:%@,学校:%@”,[self stid],[self name],[self schoolName]); //访问属性}+ (instancetype)studentWithData:(NSString*)name withStid:(NSString*)stid withSchoolName:(NSString*)schoolName{Student* stu=[self alloc];stu.name=name;stu.stid=stid;stu.schoolName=schoolName;return stu;}@endNSLog(@”***************************** 动态数组 *****************************”);//给数组中的每个元素都发起一个方法的调用消息(OC的动态性绝佳体现)//- (void)makeObjectsPerformSelector:(SEL)aSelectorStudent* stu1 =[Student studentWithData:@”王小明” withStid:@”001″withSchoolName:@”东大”];Student* stu2 =[Student studentWithData:@”孙大宝” withStid:@”002″withSchoolName:@”北大”];Student* stu3 =[Student studentWithData:@”李小琳” withStid:@”003″withSchoolName:@”南大”];NSArray* stuArray=[NSArray arrayWithObjects:stu1,stu2,stu3, nil];//通过编译器指令,,查询得到一个printMe的方法类型SEL printme=@selector(printMe);//- (void)makeObjectsPerformSelector:(SEL)aSelector[stuArray makeObjectsPerformSelector:printme];[stuArray makeObjectsPerformSelector:@selector(setSchoolName:) withObject:@”网博”];NSLog(@”输出改变学校后的元素”);[stuArray makeObjectsPerformSelector:printme];命运掌握在自己手中

NSArray类 、NSMutableArray类

相关文章:

你感兴趣的文章:

标签云: