NSArray : 不可变数组
NSMutableArray : 可变数组
OC数组不能存放nil值
OC数组只能存放OC对象、不能存放非OC对象类型,比如int\struct\enum……等
//1.NSArray 的创建
NSArray *array1 = [NSArray array];//这个array1永远是空数组
NSArray *array2 = [NSArray arrayWithObject:@"Jack"];
NSArray *array3 = [NSArray arrayWithObjects:@"Jack",@"Julia",@"Rose",@"12345",nil];// nil是数组元素结束的标记
NSArray *array4 = @[@"Jack",@"Julia",@"Rose",@"12345"];// 快速创建一个NSArray对象
// *特别注意:@[] 只能创建不可变数组NSArray
//2.NSArray 的元素个数 及 元素的访问
NSLog(@"%@",array4);// NSArray 全部元素的访问
NSLog(@"%ld",array4.count);// NSArray 元素个数的访问
NSLog(@"%@",array4[1]);// NSArray 中元素的快速访问
NSLog(@"%@",[array4 objectAtIndex:1]);// NSArray 中元素一般的访问
//3.遍历数组
Person *Person1 = [[Person alloc] init];//创建一个Person对象
NSArray *arr1 = @[Person1,@"rose",@"Jack",@"Julia"];// 数组可以存储对象
// 第一种遍历: for循环
for (int i=0; i<arr1.count; i++) {
NSLog(@"%@",arr1[i]);
}
// 第二种遍历:id obj 代表着数组中的每一个元素
for (id obj in arr1) {
NSLog(@"%@",obj);
}
// 第三种遍历:在第二种遍历的基础上访问元素,同时访问每个元素对应的下标
for (id obj in arr1) {
// 找出obj元素在数组中的位置 元素的第一个下标为 0 i = 0;
NSUInteger i = [arr1 indexOfObject:obj];
NSLog(@"%ld--%@",i,obj);
i++;
// 加条件 当i 下标等于一个值时,跳出循环
if (i==2) {
break;
}
}
// 第四种遍历:使用block遍历每一个元素
// 这个方法对每一个元素都调用一次block,有obj,也有index,而且还可以设置stop随时终止遍历
[arr1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%ld - %@",idx,obj);
// 加条件 下标等于一个值时,停止遍历
if (idx == 0) {
*stop = YES;// 停止遍历
}
}];
// NSMutableArray : 可变数组的基本使用
// 创建可变数组
NSMutableArray *ma1 = [NSMutableArray arrayWithObjects:@"Jack",@"Julia",@"Rose",nil];
[ma1 addObject:[[Person alloc] init]];// 添加元素 往可变数组中添加一个Person对象
[ma1 addObject:@"Peter"];// 添加元素 往可变数组中添加一个字符串
[ma1 insertObject:@"Jim" atIndex:5];// 添加元素 在指定的下标位置添加一个字符串
[ma1 removeObject:@"Rose"];// 删除指定的对象
[ma1 removeAllObjects];// 删除所有的对象
[ma1 replaceObjectAtIndex:3 withObject:@"100"];
[ma1 exchangeObjectAtIndex:1 withObjectAtIndex:3];
NSLog(@"%@",ma1);// 访问数组元素
NSLog(@"%ld",ma1.count);// 打印数组中总元素的个数
|