可变数组NSMutableArray,他是NSArray的子类
一.初始化方法
1.初始化一个空的可变数组
NSMutableArray *mArray1 = [NSMutableArray array];
2.创建一个里面只有一个元素的可变数组
NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"];
3.创建一个里面有多个元素的可变数组
NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",nil];
4.根据另一个数组产生新的数组
NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray3];
5.可变数组独有的初始化方法
NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10];
注意:数组的容量也只是数组最终大小的一个参考,容量数值count之所以存在,count是为了能够对代码进行一些优化,既不会将对象预写入数组,也不会限制该容量的大小。
6.从本地读取数组
NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""];
7.从网络读取数组
NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
二.操作可变数组
1.在数组的末尾增加一个元素
[mArray3 addObject:@"5"];
2.在数组指定位置插入一个元素
[mArray3 insertObject:@"Rick" atIndex:2];
3.将数组指定位置上的元素替换成用户想要的元素
[mArray3 replaceObjectAtIndex:2 withObject:@"Jack"];
4.将数组指定位置上的2个元素交换位置
[mArray3 exchangeObjectAtIndex:2 withObjectAtIndex:4];
5.删除指定元素
[mArray3 removeObject:@"Jack"];
6.删除指定位置上的元素
[mArray3 removeObjectAtIndex:1];
7.删除数组中最后一个元素
[mArray3 removeLastObject];
8.删除数组所有元素
[mArray3 removeAllObjects];
for (int i = 0; i<mArray3.count; i++) {
NSLog(@"%@",mArray3[i]);
}
9.数组的遍历
NSMutableArray *marray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
10.快速枚举
for (NSString *element in marray) {
NSLog(@"%@",element);
}
11.使用系统提供的枚举类型
NSEnumerator *enumerator = [marray objectEnumerator];
注意:得到一个枚举器以后我们就可以通过while循环来遍历数组元素,二步用管索引问题,每次循环可以通过枚举器的nextObject方法得到下一个数组里的对象,直到nextObject为nil时,循环结束,这也是为什么数组中不要出现你咯的原因。
id ele;
while (ele = [enumerator nextObject]) {
NSLog(@"%@",ele);
}
/*
注意:
我们使用枚举器遍历数组元素期间,不要添加或者删除数组元素,否则运行的时候程序会崩溃,因为通过objectEnumerator的枚举器的时候数组元素的个数已经记录在枚举器里面了,在遍历的时候,如果添加或者删除数组元素的话,数组元素的个数就前后不一致而出现程序异常
*/