OC--NSArray和NSMutableArray

NSArray:

只能存放对象。不能存放C语言中基本的数据类型。如int/double/float等等

数组下标越界不会有警告,运行时会直接报错


// 不可变数组NSArray

// 在数组从存入nil需要使用NSNull,不可以直接存入nil,因为在数组中nil代表数组结束

    NSNull *n = [NSNull null];

 // 创建数组对象,并在其中添加几个NSString对象,nil代表数组的结束,不可能更改

    NSArray *array1 = [NSArray arrayWithObjects:@"one", @"tow", n, @"three", nil];

    NSArray *array2 = [NSArray arrayWithObject:@"呵呵,你真逗。。。。。"];

    

// 计算数组的长度

    NSLog(@"array1 count : %ld", [array1 count]);

    NSLog(@"array2 count : %ld", [array2 count]);


// 取出数组中得对象

    // 简单的使用for循环通过下边来获取对象

    for (int i = 0; i < [array1 count]; i++) {

        NSLog(@"array1[%d] = %@", i, [array1 objectAtIndex:i]);

    }


// 以消息嵌套的形式实例化一个NSArray对象

    NSArray *array3 = [[NSArray alloc] initWithObjects:@"abc", @"def", @"haha", nil];

    NSLog(@"array3 = %ld", [array3  count]);

    NSLog(@"%@", array3); // 数组使用小括号来包括

    

    // 释放内存

    [array3 release];




// 可变数组NSMutableArray

// 通过arrayWithCapacity:来创建一个可变数组,指定长度为10

    NSMutableArray *mutableArray1 = [NSMutableArray arrayWithCapacity:10];

    

    // 使用类方法创建一个对象

    mutableArray1 = [NSMutableArray arrayWithObjects:@"111", nil];

    

    // 通过addObject对象添加对象

    [mutableArray1 addObject:@"one"];

    [mutableArray1 addObject:@"two"];

    [mutableArray1 addObject:@"three"];

    

    // 打印数组的长度

    NSLog(@"mutableArray count =  %ld", [mutableArray1 count]);

    

    // 打印数组

    NSLog(@"mutableArray %@", mutableArray1.description);

    

    // 使用for循环打印数组

    for (int i = 0; i < [mutableArray1 count]; i++) {

        NSLog(@"mutableArray[%d] = %@", i, [mutableArray1 objectAtIndex:i]);

    }

    

    // 删除数组中得对象

    // [mutableArray1 removeLastObject]; // 删除最后一个对象

    // [mutableArray1 removeObject:@"111"]; // 删除指定名称的对象

    [mutableArray1 removeObjectAtIndex:1]; // 删除指定位置的对象

    // [mutableArray1 removeAllObjects]; // 删除全部对象

    

    NSLog(@"mutableArray %@", mutableArray1.description);

    

    // 向可变数组中插入对象, 插入的字符串中有空格的时候会被双引号包围

    [mutableArray1 insertObject:@"new String" atIndex:2 ];

    NSLog(@"mutableArray %@", mutableArray1.description);    

  

    // 替换数组中对象 // 存入中文时直接打印数组会出现"\U7231\U597d"这种形式,需要从数组中取出来才可以正常显示

    [mutableArray1  replaceObjectAtIndex:3 withObject:@"爱好"];

    NSLog(@"mutableArray %@", mutableArray1.description);

    NSString *string = [mutableArray1 lastObject];

    NSLog(@"%@", string);

    

    // 数组的替换

    // 数组的简写@[@"0", @"2"]

    NSRange range = NSMakeRange(1, 2);

    // 对应的进行替换

    [mutableArray1 replaceObjectsInRange:range withObjectsFromArray:@[@"1111111", @"2222222"]];

    NSLog(@"mutableArray %@", mutableArray1.description);



// 数组的排序

// 可变数组直接在原数组上进行排序,不可变数组排序后产生新的数组

    NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"3", @"6", @"2", @"1", nil];

    NSLog(@"%@", array1);

    // 使用选择器进行比较数组,返回一个升序的数组

    [array1 sortUsingSelector:@selector(compare:)];

    NSLog(@"使用选择排序后: %@", array1);

    

    // 使用sortUsingCompare:

    [array1 sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {

        obj1 = @"1";

        obj2 = @"2";

        return NSOrderedDescending;

        }];

    NSLog(@"使用选择排序后: %@", array1);    

    

    // 用规定的描述对数组进行排序

    // NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO];

    // [array1 sortUsingSelector:[NSArray arrayWithObject:sd]];

    // NSLog(@"%@", array1);



// 数组的遍历

 // 创建数组

    NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"3", @"6", @"2", @"1", nil];

    // 可以通过枚举器和nextObject可以返回当前对象

    

    // 使用NSEnumerator遍历对象,通过给数组发送objectEnumerator获取到整个数组的枚举器

    NSEnumerator *enumerator = [array1 objectEnumerator];

    // 储存数组中每个元素对象

    id object = nil;

    while (object = [enumerator nextObject]) { // 通过nextObject消息读取下一个元素对象

        NSLog(@"%@", object);

    }

    

    // 使用 快速枚举 遍历数组取值

    id object1 = nil;

    for (object1 in array1) {

        NSLog(@"%@", object1);


    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值