NSArray和NSMutableArray使用
2016-08-19 本文已影响464人
飞天猪Pony
NSArray不可变数组
- NSArray特点
- NSArray的创建
- NSArray常用方法
- NSArray简化形式
- NSArray的遍历
- NSArray读写文件
- NSArray与字符串
1、NSArray特点
1、一旦创建成功,内容不可改变(NSArray是不可变数组,NSMutableArray是可变数组)
2、只能存放OC对象
2、NSArray的创建
创建一个空数组:
NSArray*arr1 =[NSArray array];
创建多元素数组:
NSArray *arr2 = [NSArray arrayWithObject:@”one”,@”two”,@”three”,nil];
用一个数组创建另一个数组:
NSArray *arr3 = [NSArray arrayWithArray: arr2];
初始化方法:
init返回一个空数组
initWithArray从已有数组初始化
initWithContentsOfFile//从plist文件加载
initWithContentsOfUrl//从网络地址上获取
initWithObject用一个对象初始化
initWithObjects从多对象初始化
3、NSArray常用方法
NSArray *arr = [NSArray arrayWithObject:@”one”,@”two”,@”three”,@”four”,nil];
或者arr =@[@”one”,@”two”,@”three”,@”four”];
获取数组的长度,count获取数组元素的个数
int arrLength = arr.count;
arrLength = [arr count];
根据下标,获取下标对应的对象
NSString *str = [arr objectAtIndex:2];//打印出来的是three,因为数组元素是从0开始的(0,1,2 . . .)
返回元素的下标:
int intnum = [arr indexOfObject:”four”];//返回的下标是3
数组中是否包含了某个元素:
if ([arrcontainsObject:@”four”] == YES){
NSLog(@”包含此元素”);
}else{
NSLog(@”不包含此元素”);
}
4、NSArray简化形式
用简化的方法定义数组:
NSArray*arr = @[@”one”,@”two”,@”three”];
访问数组元素:
NSString *str = [arr objectAtIndex:1];//返回two
用简化的方法访问数组元素:
NSString *str =arr[1];//返回two
5、NSArray的遍历
定义一个数组:
NSArray*arr = @[@”one”,@”two”,@”three”,@”four”];
对数组进行遍历(两种方法):
for (int i = 0;i < arr.count;i++){
NSLog(@”%@”,arr[i]);
}
或者
for (NSString *str in arr){
NSLog(@”%@”,str);
}
6、NSArray读写文件
写入
NSArray *arr = @[@”one”,@”two”,@”three”];
把arr中的内容写入到文件中,.plist是一种特殊的文件格式:
BOOL isWrite = [arr writeToFile:@”/Users/xingming/Desktop/arr.xml” atomically: YES];
if (isWrite){
//判断是否写入成功,如果isWrite是真,则执行此方法
NSLog(@”success!”);
}
读取
NSArray *readArr = [NSArray arrayWithContentsOfFile:@”/Users/xingming/Desktop/arr.xml”];
NSLog(@”%@”,readArr);//打印
7、NSArray与字符串
①把数组拼接成字符串
②把字符串拆分成数组
把数组拼接成字符串
定义一个数组:
NSArray*arr =@[@”1”,@”2”,@”3”,@”4”];
把数组arr中的元素用“-”连接起来,变成1-2-3-4
NSString*str = [arr componentsJoinedByString: @”-”];
NSLog(@”str = %@”,str);//打印结果:str = 1-2-3-4
把字符串拆分成数组
NSArray *aArray = [str componentsSeparatedByString:@"-"];;
NSLog(@”aArray= %@”,aArray);//打印
NSMutableArray可变数组
- 为数组分配内存空间
- 添加对象
- 向尾部添加数组对象
- 删除数组元素
- 替换某所引值对应的对象
- 数组迭代遍历
1、为数组分配内存空间
为数组分配内存空间
NSMutableArray *array = [NSMutabeArray arrayWithCapacity:10];
//初始化可变数组对象的长度,如果后面代码继续添加数组超过长度10以后NSMutableArray的长度会自动扩充,10是自己可以设置的颗粒度。
2、添加对象
添加对象
方法:- (void)addObject: (id)anObject;
例子:
NSMutableArray*array = [NSMutableArray arrayWithCapacity:10];
[array addObject:@“One”];
[array addObject:@“Two”];
NSLog(@“array:%@”,array);
打印:
array:(
One,
Two
)
3、向尾部添加数组对象
方法:addObjectsFromArray:
NSArray *array = @[@"One",@"Two",@"Three"];
NSMutableArray*mutArr = [NSMutableArray arrayWithArray:array];
NSLog(@“mutArr=%@”,mutArr);
打印:
mutArr= (
One,
Two,
Three
)
4、删除数组元素
[array removeObject:(id)] :删除数组中指定元素,根据对象isEqual消息判断。
[array removeObjectIdenticalTo:(id)] :删除数组中指定元素,根据对象的地址判断
[array removeObjectIdenticalTo:(id) inRange:(NSRange)] :在指定范围内删除指定的元素。
[array removeObjectAtIndex:(NSUInteger)]:删除数组中指定脚标索引的数据。
[array removeObjectsInArray:(NSArray *)] :删除一个数组的元素。
[array removeAllObjects]:删除数组中所有的元素(清空数组)
说明:array是可变数组
5、替换某所引值对应的对象
方法:replaceObjectAtIndex:withObject:
NSMutableArray *mutArr = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three", nil];
[mutArr replaceObjectAtIndex:2 withObject:@"Four"];
NSLog(@"mutArr= %@",mutArr);
打印:
mutArr= (
One,
Two,
Four
)
6、数组迭代遍历
NSObject *obj = [[NSObject alloc] init];
NSMutableArray*muArray = [NSMutableArray arrayWithCapacity:6];
[muArray addObject:@"对象1"];
[muArray addObject:@"对象2"];
[muArray addObject:obj];
NSEnumerator*enmuerator = [muArray objectEnumerator];
id object;
while(object = [enmueratornext Object]) {
NSLog(@"数组中的对象:%@",object);
}
打印: 数组中的对象:对象1
数组中的对象:对象2
数组中的对象:<NSObject: 0x7a15d2d0>