NSArray 和 NSMutableArray 定义和基本用法 :
/*
NSArray oc数组,不可变数组
*/
//====================================================
//c数组,存的所有数据元素必须是相同的数据类型
//创建数组
NSArray *ary=[[NSArray alloc]init];//不这样初始化
//ary1是不可变的,空数组,不可用。
NSArray *ary1=[NSArray array];
//ary2初始化时有一个元素。
NSArray *ary2=[NSArray arrayWithObject:@"jereh"];
//ary3初始化时有多个元素。不能nil作为元素,在里面不可以放空,也就是nil,也不能缺少和增加。
NSArray *ary3=[NSArray arrayWithObjects:@"ios",@"oc",@"c", nil];
//快速创建数组时,使用 @[<#objects, ...#>]快速创建,后面不需要加nil;
NSArray *ary4=@[@"ios",@"oc",@"c"];
//====================================================
//oc数组元素的个数
NSArray *ary5=@[@"ios",@"oc",@"c"];
NSLog(@"count = %ld",ary5.count);
//还可以:[ary5 count]调用get count方法,一半直接用ary5.count。
//访问数组的元素
NSArray *ary6=@[@"ios",@"oc",@"c"];
NSLog(@"访问元素:%@",[ary6 objectAtIndex:0]);//输出结果时ios
NSLog(@"访问元素2:%@",ary6[0]);//c中数组的取法
//====================================================
//1:遍历数组的元素(按照顺序输出)
NSArray *ary7=@[@"ios",@"oc",@"c",@"jereh",@"hello"];
for (int i=0; i<[ary7 count]; i++) {
NSLog(@"%@",ary7[i]);//简便写法,有顺序的输出.
}
/*2:遍历数组的元素(快速遍历)for循环,取出oc对象,用id类型进行遍历
每个元素都赋值给obj对象遍历循环输出
缺点:不知道取出来的对象在数组中的位置,想知道第几个加一个循环遍历
*/
int i=1;
for(id obj in ary7 ){
NSLog(@"快速遍历:第 %i 个 ,元素是: %@",i,obj);
i++;
}
/* 3:遍历数组元素:
利用Block遍历数组元素,
block:没有返回值,当前对象obj,遍历索引idx,*stop控制停止的条件,为真的时候停止遍历,
每遍历一个对象,block会被调用一次,方法参数自动生成,不用自己写。
*/
//====================================================
// void (^ myBlock) (id, NSUInteger,BOOL *)=^(id obj, NSUInteger idx, BOOL *stop) {
// NSLog(@"Block遍历数组:第 %ld 个元素是:%@",idx,obj);
//
// };
//
[ary7 enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop) {
if (idx>0) {
*stop=YES;//stop为真的时候停下,结束循环。
}
NSLog(@"Block遍历数组:第 %ld 个元素是:%@",idx,obj);
}];
//================================================================
/*
NSMutableArray 可变的数组,oc对象
NSMutableArray是NSArray的子类
*/
//创建可变的数组
//可变的数组初始化
NSMutableArray *ary8=[NSMutableArray array];
//添加元素
[ary8 addObject:@"ios"];
[ary8 addObject:@"oc"];
[ary8 addObject:@"c"];
//添加多个元素
NSMutableArray *ary9=[NSMutableArray array];
[ary9 addObjectsFromArray:ary1];
NSLog(@"ary8= %@",ary9);
//删除元素,移除元素
NSMutableArray *ary10=[NSMutableArray arrayWithObjects:@"qiao",@"you",@"nan", nil];
[ary10 removeObjectAtIndex:0];//根据索引位置
[ary10 removeObject:@"nan"];//删除制定对象
NSLog(@"%@",ary10);
//删除最后一个元素
[ary10 removeLastObject];
//删除全部元素
[ary10 removeAllObjects];
NSLog(@"%@",ary10);
//在指定位置范围内找到特定的元素进行删除
NSMutableArray *ary11=[NSMutableArray arrayWithObjects:@"qiao",@"you",@"nan",@"xiao",@"qiao", nil];
[ary11 removeObject:@"qiao"inRange:NSMakeRange(1, 1)];
NSLog(@"%@",ary11);
[ary11 removeObjectsInRange:NSMakeRange(0, 2)];
NSLog(@"%@",ary11);
//删除了同时存在中后面数组中的元素
NSArray *aryy=@[@"nan"];
[ary11 removeObjectsInArray:aryy];
NSLog(@"%@",ary11);
//======================================================================
//添加一个数组中的全部元素到另外一个数组(重新设置数组),旧的数组中的元素全部删除,加上新数组的元素。
NSArray *ary12=@[@"apple",@"hello"];
NSMutableArray *ary13=[NSMutableArray arrayWithObjects:@"i",@"love",@"ios",nil];
[ary13 setArray:ary12];
NSLog(@"%@",ary13);
//添加多个元素 在原来数组的基础上加上新数组的元素
[ary13 addObjectsFromArray:ary12];
NSLog(@"%@",ary12);
//在索引位置添加元素
[ary13 insertObject:@"jereh" atIndex:1];
NSLog(@"%@",ary13);
//替换数组中的元素
NSMutableArray *ary14=[NSMutableArray arrayWithObjects:@"aa",@"bb",@"cc",@"dd",nil];
[ary14 replaceObjectAtIndex:2 withObject:@"Cc"];
NSLog(@"%@",ary14);
NSArray *rary=@[@"ios",@"java",@"oc"];
[ary14 replaceObjectsInRange:NSMakeRange(0, 2) withObjectsFromArray:rary];//从0开始覆盖几个长度,自身的元素都替换过去
NSLog(@"%@",ary14);
//交换当前数组中某两个数组的元素
[ary14 exchangeObjectAtIndex:0 withObjectAtIndex:2];
NSLog(@"%@",ary14);
//=================================================================
//网址解析:解析出 www.baidu.com
NSString *str=@"http://www.baidu.com:/shjsdkfhoiagksdnf";
NSArray *ary15=[str componentsSeparatedByString:@"//"];
NSLog(@"%@",ary15);
NSString *str1=[NSString stringWithFormat:@"%@",ary15[1]];//lastObject
NSLog(@"%@",str1);
NSArray *ary16=[str1 componentsSeparatedByString:@":/"];
NSLog(@"%@",ary16);
NSLog(@"%@",ary16[0]);//www.baidu.com
//======================================================================
练习题目:拼接字符串:输出结果是:I You am are a a good bad girl boy
// NSString *str3=@"I am a good girl";
// NSString *str4=@"You are a bad boy";
// NSArray *str5=[str3 componentsSeparatedByString:@" "];
// NSLog(@"%@",str5);
// NSArray *str6=[str4 componentsSeparatedByString:@" "];
// NSLog(@"%@",str6);
// NSMutableArray *ary17=[NSMutableArray array];
// if ([str5 count]>=[str6 count] ) {
// NSMutableArray *ary17=[NSMutableArray arrayWithArray:str5];
// for (int i=0;i<[str6 count];i++) {
// [ary17 insertObject:str6[i] atIndex:2*i+1];
// // }
// }else {
// NSMutableArray *ary17=[NSMutableArray arrayWithArray:str6];
// for (int i=0;i<[str5 count];i++) {
// [ary17 insertObject:str5[i] atIndex:2*i+1];
//
// }
// }
//
// NSMutableString * endStr=[[NSMutableString alloc]init];
// //输出数组 for循环遍历输出
for (int i=0; i<[ary17 count]; i++) {
[endStr appendFormat:@"%@ ",ary17[i]];
}
// for(id obj in ary17){
// [endStr appendFormat:@"%@ ",obj];
//
// }
// NSLog(@"%@",endStr);
//======================================================================