在Object-C中,数组是有序的对象的集合,数组成员不必要数据类型一致,但是成员必须是对象,不能是C语言中的基本数据类型,如:int,float等。使用数组前得先创建数组对象,不管是可变数组还是不可变数组都可以当做方法的参数或返回值来使用。
NSArray(不可变数组)
1.创建数组及初始化
//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是NSArray结束的标志
//新语法
NSArray *array5 = @[@"Rick"];
NSArray *array6 = @[@"Rick",@"Jack",@"Leo"];//@"5"(字符串)有什么不同??@5(NSNumber类型)
//根据一个数组产生一个新的数组
NSArray *array7 = [NSArray arrayWithArray:array6];
//从本地读取数组文件
NSArray *array8 = [NSArray arrayWithContentsOfFile:@""];
NSArray *array9 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
//
NSUInteger count = array6.count;
// [array6 count];相当于访问器
2.数组的操作(增、删、改)
//对数组的操作
//访问数组中的元素
//访问Array6中的第一个元素
NSString *str1 = [array6 objectAtIndex:0];
//数组的遍历
for (int i = 0; i < array6.count; i++) {
NSLog(@"%@",[array6 objectAtIndex:i]);
}
//新语法
NSString *str2 = array6[0];
NSArray *array10 = @[@3,@4,@5];
// NSNumber
// 通过数组元素查找下标
NSUInteger index = [array6 indexOfObject:@"Rick"];
NSLog(@"index = %lu",index);
//判断数组中是否存在某个元素
if ([array6 containsObject:@"Rick"]) {
NSLog(@"包含此元素");
}
//向不可变数组增加一个元素
NSArray *newArray1 = [array6 arrayByAddingObject:@"Zcq"];
NSArray *newArray2 = [array6 arrayByAddingObjectsFromArray:array6];
NSString *string1 = [newArray2 componentsJoinedByString:@"~.~"];
NSArray *array11 = @[@"123",@"234",@"456",@"789"];
NSString *string2 = [array11 componentsJoinedByString:@"-"];
NSLog(@"%@",string2);
NSArray *array12 = [string2 componentsSeparatedByString:@"-"];
NSLog(@"%@",array12);
NSString *string3 = [array12 componentsJoinedByString:@""];
NSLog(@"string3 = %@",string3);
/*
使用NSArray 注意事项
1.数组越界
2.不能在数组中间存放nil,nil是数组结束标志
3.数组会对加入其中的对象自动把引用加一
NSMutableArray(可变数组)
对可变数组的初始化及操作如下:
//可变数组的初始化
NSMutableArray *array1 = [[NSMutableArray alloc] init];
//初始化一个里面有一个元素的数组
NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"];
//创建一个里面有多个元素的数组
NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
//根据另一个数组创建新的数组
NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray3];
//可变数组独有的初始化方法,不可变数组没有该方法
NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10];
NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""];
NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
//增加
//在数组末尾添加一个元素
[mArray3 addObject:@"5"];
//在指定位置插入一个元素
[mArray3 insertObject:@"4" atIndex:3];
//替换,将数组指定位置上的元素替换成用户想要的元素
[mArray3 replaceObjectAtIndex:1 withObject:@"Rick"];
//交换,将数组指定位置上的两个元素交换位置
[mArray3 exchangeObjectAtIndex:2 withObjectAtIndex:3];
//删除
//删除指定元素
[mArray3 removeObject:@"1"];
//删除指定位置上的元素
[mArray3 removeObjectAtIndex:1];
//删除数组中最后一个元素
[mArray3 removeLastObject];
//删除数组中所有元素
[mArray3 removeAllObjects];
NSLog(@"mArray3 = %@",mArray3);
NSMutableArray *newArray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
for (int i = 0; i < newArray.count; i++) {
NSLog(@"%@",newArray[i]);
}
NSLog(@"-------");
//快速枚举,经常使用,NSString可以换成id类型,(fori自动生成)
for (NSString *element in newArray) {
NSLog(@"element = %@",element);
}
//使用系统提供的枚举类型
NSEnumerator *enumerator = [newArray objectEnumerator];
id obj;//遇到nil,条件不成立,跳出循环
while (obj = [enumerator nextObject]) {
//使用枚举器遍历数组时,不能添加或删除数组元素,否则运行时程序就会崩溃
NSLog(@"%@",obj);