ObjectiveC(3)_NSArray和NSMutableArray

版权声明:本博客主要记录学习笔记和遇到的一些问题解决方案,转载请注明出处! https://blog.csdn.net/u010982507/article/details/82821609

OC中数组定义

Foundation中的数组是一组有序的对象集合,通过索引下标获取到数组中的元素。特性:

  • 数组分可变(NSMutableArray)和不可变数组(NSArray)
  • 不能存放基本数据类型,只能存放类的实例(对象)
  • 如需要将基本数据类型或结构体放入数组中,需要通过NSNumber和NSValue进行包装。

数组的创建

// 1.初始化一个元素
NSArray *arr1 = [NSArray arrayWithObject:@"one"];
NSLog(@"初始化一个元素:%@",arr1);
// 2.初始化多个元素
NSArray *arr2 = [NSArray arrayWithObjects:@"one",@"two",nil];
NSLog(@"初始化多个元素:%@",arr2);
// 3.根据另一个数组来创建一个数组
NSArray *arr3 = [NSArray arrayWithArray:arr2];
NSLog(@"复制数组:%@",arr3);
// 4.创建一个数组的实例
NSArray *arr4 = [[NSArray alloc] initWithArray:arr2];
NSLog(@"创建一个数组的实例:%@",arr4);

NSArray数组中常用方法

  • 获取数组长度
int count = [arr2 count];
NSLog(@"数组长度:%d",count);
  • 访问某个元素
// 访问某个元素
NSString *element = [arr2 objectAtIndex:1];
NSLog(@"第2个元素是:%@",element);
  • 在原来的数组上追加一个元素,返回新的数组
NSArray *addArr = [arr2 arrayByAddingObject:@"three"];
NSLog(@"在原来的数组上追加一个元素,返回新的数组:%@",addArr);
  • 用指定的字符串将数组拼接成一个字符串
NSString *strArr = [addArr componentsJoinedByString:@"#"];
NSLog(@"拼接数组:%@",strArr);
  • 用指定的字符串将数组拼接成一个字符串
NSString *strArr = [addArr componentsJoinedByString:@"#"];
NSLog(@"拼接数组:%@",strArr);
  • 判断数组中是否包含某个字符串
BOOL flag = [addArr containsObject:@"one"];
if (flag) {
   NSLog(@"包含这个字符串");
}
  • 通过元素找到数组中的元素角标
int index = [addArr indexOfObject:@"three"];
NSLog(@"元素位置:%d",index);// 找不到会返回-1
  • 找到数组第一个元素
NSString *firstEle = [addArr firstObject];
NSLog(@"数组第一个元素:%@",firstEle);
  • 找到数组最后一个元素
NSString *lastEle = [addArr lastObject];
NSLog(@"数组的最后一个元素:%@",lastEle);

NSMutableArray数组中常用方法

  • 初始化长度为5,但是长度可以改变
NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:5];
  • 向数组中添加一个元素
[mArr addObject:@"one"];
[mArr addObject:@"three"];
[mArr addObject:@"fore"];
NSLog(@"向数组中添加一个元素:%@",mArr);
  • 向数组中添加数组
NSArray *arr = [NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc", nil];
[mArr addObjectsFromArray:arr];
NSLog(@"向数组中添加数组:%@",mArr);
  • 向指定位置插入一个元素
[mArr insertObject:@"two" atIndex:1];
NSLog(@"向指定位置插入一个元素:%@",mArr);
  • 移除指定元素
[mArr removeObject:@"one"];
NSLog(@"移除指定元素:%@",mArr);
  • 移除指定角标的元素
[mArr removeObjectAtIndex:2];
NSLog(@"移除指定角标的元素:%@",mArr);
  • 移除指定范围的元素
[mArr removeObjectsInRange:NSMakeRange(0, 1)];
NSLog(@"移除指定范围的元素:%@",mArr);
  • 移除最后一个元素
[mArr removeLastObject];
NSLog(@"移除最后一个元素:%@",mArr);
  • 移除所有的元素
[mArr removeAllObjects];
NSLog(@"移移除所有的元素:%@",mArr);
  • 删除数组中的子数组
[mArr removeObjectsInArray:arr];
NSLog(@"删除数组中的子数组:%@",mArr);
  • 替换指定下标的元素
[mArr addObject:@"hello"];
[mArr replaceObjectAtIndex:0 withObject:@"replace"];
NSLog(@"替换指定下标的元素:%@",mArr);
  • 数组的遍历
// for循环遍历
[mArr addObjectsFromArray:arr];
for (int i = 0; i<[mArr count]; i++) {
    NSLog(@"for循环遍历:%d:%@",i,[mArr objectAtIndex:i]);
}
// for-in遍历
for(NSString *el in mArr){
    NSLog(@"for-in 遍历:%@",el);
}
// 当不确定数组中元素类型时,用id来定义变量类型,且变量不加*
for(id el in mArr) {
    NSLog(@"for-in 遍历:%@",el);
}

猜你喜欢

转载自blog.csdn.net/u010982507/article/details/82821609
今日推荐