一、NSMutableArray介绍
NSMutableArray是NSArray的子类
NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素。
NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素。
二、NSMutableArray基本使用方法
1、创建数组
(1)空数组
NSMutableArray *arr1 = [NSMutableArray array];
NSLog(@"arr1 = %@",arr1);
打印结果:
arr1 = ( )
(2)创建的时候初始化一个元素
NSMutableArray *arr2 = [NSMutableArray arrayWithObject:@"one"];
NSLog(@"arr2 = %@",arr2);
打印结果:
arr2 = (one)
(3)创建的时候初始化多个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"one",@"two",@1,@3, nil];
NSLog(@"arr3 = %@",arr3);
打印结果:
arr3 = (one,two,1,3)
(4)创建一个数组,并且指定长度
NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:3];
NSLog(@"arr4 = %@",arr4);
//打印地址
NSLog(@"arr4 = %p",arr4);//0x100603850
打印结果:
arr4 = ()
arr4 = 0x100202260
2、基本用法
(1)增加元素
[arr4 addObject:@1];
[arr4 addObject:@"five"];
NSLog(@"arr4 = %@",arr4);
//打印地址
NSLog(@"arr4 = %p",arr4);//0x100603850 //地址不变
打印结果:
arr4 = ( )
arr4 = 0x100201300
arr4 = (1,five)
arr4 = 0x100201300
(2)插入到元素的指定位置
NSMutableArray *arr5 = [NSMutableArray arrayWithObjects:@"123",@321,@"hai",@"ma",@888, nil];
NSLog(@"arr5 = %@",arr5);
//在下标为2的位置插入元素
[arr5 insertObject:@"Hello" atIndex:2];
NSLog(@"arr5 = %@",arr5);
打印结果:
arr5 = (123,321,hai,ma,888)
arr5 = (123,321,Hello,hai,ma,888)
(3)删除元素
//根据对象内容删除
[arr5 removeObject:@321];
NSLog(@"arr5 = %@",arr5);
//根据位置删除
[arr5 removeObjectAtIndex:0];
NSLog(@"arr5 = %@",arr5);
//全部删除
[arr5 removeAllObjects];
NSLog(@"arr5 = %@",arr5);
打印结果:
arr5 = (123,Hello,hai,ma,888)
arr5 = (Hello,hai,ma,888)
arr5 = ( )
(4)根据下标修改元素
NSMutableArray *arr6 = [NSMutableArray arrayWithObjects:@"123",@321,@"hai",@"ma",@888, nil];
NSLog(@"arr6 = %@",arr6);
[arr6 replaceObjectAtIndex:4 withObject:@666];
NSLog(@"arr6 = %@",arr6);
//更简便的写法
arr6[0] = @999;
NSLog(@"arr6 = %@",arr6);
打印结果:
arr6 = (123,321,hai,ma,888)
arr6 = (123,321,hai,ma,666)
arr6 = (999,321,hai,ma,666)
(5)查找元素
//返回值BOOL类型
BOOL isSeach = [arr6 containsObject:@999];
if (isSeach) {
NSLog(@"查找到了");
}else{
NSLog(@"没有查找到");
}
打印结果:
查找到了
(6)交换元素
NSMutableArray *arr7 = [NSMutableArray arrayWithObjects:@1,@2,@3,@4,@5,nil];
NSLog(@"arr7 = %@",arr7);
//交换下标为0和下标1的元素
[arr7 exchangeObjectAtIndex:0 withObjectAtIndex:1];
NSLog(@"arr7 = %@",arr7);
打印结果:
arr7 = (1,2,3,4,5)
arr7 = (2,1,3,4,5)