数组
不可变数组
初始化创建一个数组(NSArray)对象
NSArray *array1=[[NSArray alloc]init];
NSArray *array2=[NSArray array];
创建一个里面有一个元素的不可变数组
NSArray *array3=[NSArray arrayWithObject:@"Rick"];
创建里面有多个元素的不可变数组
NSArray *array4=[NSArray arrayWithObjects:@"Rick",@"Jack",@"Leo", nil];
nil 只能出现在数组的最后,不能在数组中间存放nil,因为nil是一个NSArray的数组结束标志。
新语法
NSArray *array5=@[@"array"];
NSArray *array6=@[@"Rick",@"Jack",@"Leo"];
//[NSNumber numberWithInt:5];
根据一个数组产生一个新的数组
NSArray *array7=[NSArray arrayWithArray:array6];
NSLog(@"%@",array7);
从本地里面提取数组文件
NSArray *array8=[NSArray arrayWithContentsOfFile:@""];
NSArray *array9=[NSArray arrayWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"]];
求数组中元素个数
NSUInteger count=array6.count;
//数组的操作
//访问数组中的元素
//访问array6中的第一个元素
NSString *str1=[array6 objectAtIndex:];
遍历数组(for循环)
for (int i=; i<array6.count; i++) {
NSLog(@"%@",[array6 objectAtIndex:i]);
}
新语法访问数组中元素
NSString *str2=array6[];
NSArray *array10=@[@3,@4,@5];
//@3 [NSNumber numberWithIndex:]
//[NSNumber numberWithIndex:YES];
//@YES 就是OC中的布尔型的true;
通过数组中的元素查找下标
NSUInteger index= [array6 indexOfObject:@"Rick"];
NSLog(@"index = %lu",index);
判断数组中是否存在某个元素
if ( [array6 containsObject:@"Rick"]) {
NSLog(@"包含此元素");
}
向不可变数组拼接一个元素
NSArray *newarray1=[array6 arrayByAddingObject:@"xiangjie"];
向不可变数组拼接一个数组,以及使用分隔符合并数组为字符串和将字符串拆分为数组。
NSArray *newarray2=[array6 arrayByAddingObjectsFromArray:array6];
NSString *string=[newarray2 componentsJoinedByString:@"~.~"];
NSLog(@"%@",string);
NSArray *array11=@[@"123",@"456",@"789",@"000"];
NSString *string2=[array11 componentsJoinedByString:@"-"];
NSLog(@"%@",string2);
NSArray *array12=[string2 componentsSeparatedByString:@"-"];
NSLog(@"%@",array12);
NSString *string3=[array12 componentsJoinedByString:@""];
NSLog(@"%@",string3);
使用NSArray 注意事项:
1.数组越界的问题
2.数组最后一个结束标志为nil,中间不能放nil
3.数组会对加入其中的对象自动把引用加一,
可变数组
可变数组的定义:
可变数组 NSMutableArray ,它是 NSArray 的子类
初始化方法
初始化一个空数组
NSMutableArray *array1 =[NSMutableArray array];
初始化一个里面有一个元素的数组
NSMutableArray *mArray2=[NSMutableArray arrayWithObject:@"1"];
创建一个里面有多个元素的数组
NSMutableArray *mArray3=[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
根据另一个数组创建新的数组
NSMutableArray *mArray4=[NSMutableArray arrayWithArray:mArray3];
可变数组独有的初始化方法
NSMutableArray *mArray5=[NSMutableArray arrayWithCapacity:];
引入文件和网页
NSMutableArray *mArray6 =[NSMutableArray arrayWithContentsOfFile:@""];
NSMutableArray *mArray7 =[NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@"www.baidu.com"]];
增加
在数组末尾添加一个元素
[mArray3 addObject:@"5"];
NSLog(@"%@",mArray3);
在数组指定位置插入一个元素
[mArray3 insertObject:@"4" atIndex:3];
[mArray3 replaceObjectAtIndex:1 withObject:@"Rick"];
交换
[mArray3 exchangeObjectAtIndex:2 withObjectAtIndex:3];
NSLog(@"%@",mArray3);
删除
删除指定元素
删除指定位置上的元素
[mArray3 removeObjectAtIndex:1];
NSLog(@"%@",mArray3);
删除最后一个元素
删除数组内全部元素
查
NSMutableArray *newArray=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil];
for (int i=; i<newArray.count; i++) {
NSLog(@"%@",newArray[i]);
}
NSLog(@"---------");
//快速枚举 不知道类型时可以把这个类型改成id
for(NSString *element in newArray){
NSLog(@"element = %@",element);
}
//使用系统提供的枚举类型 NSEnumerator
//创建一个枚举器
NSEnumerator *enumerator = [newArray objectEnumerator];
id obj;
while (obj =[enumerator nextObject]){
// [newArray addObject:@"5"];
NSLog(@"obj=%@\n",obj);
}
/*
使用快速枚举或枚举器遍历时,不要添加或者删除数组元素,否则运行时就会崩溃
*/