不可变数组NSArray与可变数组NSMutableArray

不可变数组NSArray

//创建一个空数组
NSArray *array = [NSArray array];
//这样创建是没有意义的.

//创建只有一个元素的数组
NSArray *array1 = [NSArray arrayWithArray:@"a"];
NSArray *array2 = [NSArray arrayWithObject:@"b"];

//使用便利构造器创建有多个元素数组
NSArray *array3 = [NSArray arrayWithObjects:@"Hola",@"Bonjour",@"Guten",@"Tag", nil]; //注意最后有nil

//创建数组,有多个元素 使用对象方法
NSArray *array4 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", @"4",nil];
//用一个数组创建另一个数组
NSArray *array5 = [NSArray arrayWithArray:array3];

//在控制台打印数组中的所有对象 使用数组名
NSLog(@"%@",array5);

//在控制台打印数组中的某个对象 使用数组名 + 下标法
NSLog(@"%@",array5[0]);

一些常用用法:

NSArray *array = [NSArray arrayWithObjects:@"Hola",@"Guten",@"Tag",@"Bonjour", nil];
//1.获取数组的元素个数 使用count
NSLog(@"%ld",[array count]);

//2.根据下标获取下标对应的对象
NSLog(@"%@",[array objectAtIndex:2]);  // 此处[]不能用.代替

//3.通过元素找下标
NSUInteger r = [array indexOfObject:@"three"];
NSLog(@"%ld",r);

//4.判断数组中是否包含了某个元素
BOOL r1 = [array containsObject:@"one"];
 if (r1) {
     NSLog(@"包含这个元素!");
 }else{
     NSLog(@"没找着!");
 }

简化的创建方式 (语法糖):

NSArray *array = @[@"one",@"two",@"three",@"four"];

简化的访问方式(通过元素下标来访问)

NSString *str = array[2];
NSLog(@"%@",str);

数组遍历:

//第一种方式: 普通遍历 -- 通过下表访问
for (int i = 0; i < array.count; i++) {
    NSLog(@"%@",array[i]);
}

//第二种方式: 快速枚举法--for循环的增强版
for (NSString *obj in array) {
    NSLog(@"%@",obj);
}

//第三种方式: 使用block进行遍历
[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    if (idx == 2) {     //idx是下标
        *stop = YES;
    }else{
    NSLog(@"下标为:%ld 对象为%@",idx,obj);
    }
}];

可变数组NSMutableArray

可变数组NSMutableArray 继承于 不可变数组NSArray

//1.创建一个空数组
     NSMutableArray *array =[NSMutableArray array];
//2.维数组追加元素
    [array addObject:@1];
//3.创建数组,添加多个元素
    NSMutableArray *array2 = [NSMutableArray arrayWithCapacity:5];
//添加5个元素
    [array2 addObject:@1];
    array2[1] = @2;
    array2[2] = @3;
    array2[3] = @4;
    array2[4] = @5;
//输出数组
    NSLog(@"%@",array2);

可变数组有而不可变数组没有的一些操作:

//插入 insert
    [array2 insertObject:@6 atIndex:0];
    NSLog(@"%@",array2);
//替换  replace
    [array2 replaceObjectAtIndex:0 withObject:@0];
    NSLog(@"%@",array2);
//删除 remove
    [array2 removeLastObject];
    NSLog(@"%@",array2);
//是否包含 contain
    BOOL r = [array2 containsObject:@2];   //此方法有返回值
    if (r) {
        NSLog(@"包含!");
    } else {
        NSLog(@"不包含!");
    }
//交换元素  exchange
    [array2 exchangeObjectAtIndex:0 withObjectAtIndex:2];
    NSLog(@"%@",array2);

一个典型的错误用法:

// NSMutableArray *array =@[@1,@2,@3,@4,@5];
// [array addObject:@”hello”];
// NSLog(@”%@”,array3);
注: 语法糖是为不可变对象设立的,如果创建可变对象时,使用语法糖,会报黄,创建之后,再为此空间添加对象,程序会抛出异常,因为在运行时,默认是不可变的数组.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值