天天看点

NSArray和NSMutableArray的基本用法

一、OC数组

1.OC中的数组:是一个对象,数组中存放的是对象的地址,可以存放任意OC对象类型的地址,只能是OC对象.数组是有序的,而且可以存放重复的元素

2.数组分为不可变数组和可变数组.

  (1)不可变数组NSArray:初始化之后不能修改数组的内容

  (2)可变数组NSMutableArray:可以随时修改数组的内容(增加元素、删除元素、修改元素)

二、NSArray

//常用的创建方式
NSArray *array1 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
NSArray *array2 = @[@"a",@"b",@"c"];

NSArray *array3 = [[NSArray alloc] initWithArray: array1];
NSArray *array4 = [[NSArray alloc] initWithContentsOfFile:@""];
NSArray *array5 = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@""]];

//数组的长度
int count = (int)array1.count;

//判断数组中是否存在某个对象
BOOL isHave = [array1 containsObject:@"2"];

//取出数组中最后一个元素
NSString *str = [array1 lastObject];
//取出数组中首个元素
str = [array1 firstObject];

//根据下标取出数组中的元素
str = [array1 objectAtIndex:3];
//获取元素在数组中对应的下标(如果元素不存在,则输出-1)
int index = (int)[array1 indexOfObject:@"3"];


//数组的遍历
//[1]使用 for 循环遍历
for (int i=0; i<array1.count; i++) {
    NSLog(@"%@",[array1 objectAtIndex:i]);
}
        
//[2]使用 for-in 循环遍历(快速枚举法) 要求数据类型一致
for (NSString *str in array1) {
    NSLog(@"%@",str);
}

//[3]使用 block 遍历
//idx:循环索引下标(0开始)
//obj:当前对象
[array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL * stop) {
    NSLog(@"%lu----%@",idx,obj);
}];


//将字符串拆成数组
NSArray *arr = [@"1,2,3,4,5" componentsSeparatedByString:@","];

//将数组元素连接成字符串
NSArray *arr = @[@"爱国", @"敬业", @"和谐"];
NSString *str = [arr componentsJoinedByString:@"-"];
 

//文件的读写(plist文件与xml文件)
//将数组中的内容写入文件
BOOL isOK = [arr writeToFile:@"arr1.xml" atomically:NO];
BOOL isOK = [arr writeToFile:@"arr2.plist" atomically:NO];
 
//从文件中读取数据到数组
NSArray *arr1 = [NSArray arrayWithContentsOfFile:@"arr1.xml"];
NSArray *arr2 = [NSArray arrayWithContentsOfFile:@"arr2.plist"];
           

三、NSMutableArray

可变数组,继承自NSArray

//创建并初始化
NSMutableArray *array1 = [[NSMutableArray alloc] init];
//初始化可变数组对象的长度,如果后面代码继续添加数组超过长度10以后NSMutableArray的长度会自动扩充
NSMutableArray *array2 = [NSMutableArray arrayWithCapacity:10];
NSMutableArray *array3 = [[NSMutableArray alloc] initWithObjects:@"a",@"b",@"c", nil];

//添加元素
[array1 addObject:@"A"];
NSArray * arr = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
[array1 addObjectsFromArray:arr];//把数组元素添加到尾部

//删除数组中所有元素
[array removeAllObjects];

//删除数组中最后一个元素
[array removeLastObject];

//删除指定的元素
[array removeObject:@"A"];
//删除指定下标的元素
[array removeObjectAtIndex:2];
//删除指定下标的元素
[array removeObjectIdenticalTo:NSMA]

//修改数据
[array replaceObjectAtIndex:2 withObject:@"H"];

//交换元素的位置
[array exchangeObjectAtIndex:0 withObjectAtIndex:1];