oc中的数组和我们以前学过的c、c++或者是java中的数组还是有很大的区别的
Foundation中的数组是一组有序的对象的集合,数组中不可以存放基本数据类型,只能存放类的实例(对象),如果需要将基本数据类型、结构体存放在数组中,需要先进行封装
NSArray 不可变数组
单一元素初始化
//初始化一个单元素数组
NSArray *array = [NSArray arrayWithObject:@"one"];
NSLog(@"%@",array);
//初始化一个多元素数组,注意和上面的对比多了一个s
NSArray *array2 = [NSArray arrayWithObjects:@"one",@"two",@"three",nil];
NSLog(@"%@",array2);
//初始化一个多元素数组
NSArray *array3 = [[NSArray alloc]initWithObjects:@"you",@"me",@"he",nil];
NSLog(@"%@",array3);
//复制一个数组
NSArray *array4 = [[NSArray alloc]initWithArray:array3];
NSLog(@"%@",array4);
//获取数组中的元素的个数
NSInteger *count = [array4 count];
NSLog(@"%d",count);//打印 3
//根据下标访问对象
NSString *firstObj = [array4 objectAtIndex:2];
NSLog(@"%@",firstObj);//打印 he
//在原数组的基础上追加对象,并生成一个新的数组
NSArray *array5 = [array4arrayByAddingObject:@"it"];
NSLog(@"%@",array5);
//用指定的字符串把数组的元素连接
NSString *arrayString = [array5componentsJoinedByString:@"/"];
NSLog(@"%@",arrayString);//打印 you/me/he/it
//数组中是否包含某对象
BOOL isContain = [array5 containsObject:@"it"];
NSLog(@"%d",isContain);//打印 1
//查询对象在数组中的位置
NSInteger *atIndex1 = [array5 indexOfObject:@"it"];
NSInteger *atIndex2 = [array5 indexOfObject:@"yy"];
NSLog(@"at %d",atIndex1);//打印 at 3
NSLog(@"at %d",atIndex2);//不存在打印
2、可变数组 NSMutableArray
继承自NSArray,因此可以使用NSArray的所有方法
//向数组中添加一个元素
NSMutableArray *array1 = [NSMutableArray arrayWithObject:@"hello"];
[array1 addObject:@"world"];
NSLog(@"%@",array1);
//在数组的指定的下标处添加元素
[array1 insertObject:@"nihao" atIndex:0];
NSLog(@"%@",array1);
//按下标删除元素
[array1 removeObjectAtIndex:0];
NSLog(@"%@",array1);
//删除最后一个元素
[array1 removeLastObject];
NSLog(@"%@",array1);
//向数组中添加数组
[array1 addObjectsFromArray:array1];
NSLog(@"%@",array1);
//替换指定位置元素
[array1 replaceObjectAtIndex:1 withObject:@"world"];
NSLog(@"%@",array1);
遍历数组
NSArray *array2 = [NSArray arrayWithObjects:@"one",@"two",@"three",@"four",@"five", nil];
for(int i=0;i<[array2 count];i++)
{
NSString *element = [array2 objectAtIndex:i];
NSLog(@"%@",element);
}
//方法二,枚举法
for(NSString *element in array2)
{
NSLog(@"%@",element);
}