iOS之OC随笔-遍历数组方法总结

本文介绍Objective-C中数组和字典的多种遍历方法,包括for循环、增强for循环、枚举器等,并展示了如何在遍历过程中安全地删除元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {

//OC中在C基础之上增加的数据类型,BOOL,id,SEL,block

        //1、使用for循环遍历数组
        NSArray * array = @[@"One",@"Two",@"Three"];
        for (int i = 0; i < array.count; i++) {
            NSString * str = array[i];//字符串接收遍历出来的数组元素
            NSLog(@"array[%d] = %@",i,str);
        }

        //2、增强for循环,array.count值是多少就会循环遍历多少,每次取出数据中的一个元素,存储在str中
        for (NSString * str2 in array) {//注意:在实际开发中,一个数组中存储的元素一定要是同一数据类型
            NSLog(@"str2 = %@",str2);
        }

        //3、枚举器
        NSEnumerator * enumerator = [array objectEnumerator];
        NSString * str3;//必须放在外面定义,将元素都放在枚举器enumerator里面
        while (str3 = [enumerator nextObject]) {//nextObject就是相当于将枚举器中的元素遍历出来,当遍历到最后一个元素结束后为nil,则自动退出while循环
            NSLog(@"enum str = %@",str3);
        }

        //遍历数组的时候不要进行删除元素的操作,forin和枚举器中遍历删除元素会直接导致奔溃

        //4、通过遍历的方式确定删除元素的方法
        NSMutableArray * array2 = [[NSMutableArray alloc]init];
        [array2 addObject:@"1"];
        [array2 addObject:@"2"];
        [array2 addObject:@"3"];
        [array2 addObject:@"4"];
        [array2 addObject:@"5"];

        NSMutableArray * tmp = [[NSMutableArray alloc]init];

        for (NSString * str in array2) {
            if ([str isEqualToString:@"3"]) {
                [tmp addObject:str];
            }
        }
        NSLog(@"array2 %@",array2);
        NSLog(@"tmp %@",tmp);

        //遍历临时数组,从原数组中删除临时数组存储的对象
        for (int i = 0; i < tmp.count; i++) {
            NSString * str = [tmp objectAtIndex:i];
            [array2 removeObject:str];
        }
        NSLog(@"array2删除后:%@",array2);

#pragma mark 遍历字典中的元素

        NSDictionary * dict = @{@"1":@"One",
                                @"2":@"Two",
                                @"3":@"Three"};

        NSDictionary * dictbl = @{@"one":@"1",
                                  @"num":[NSNumber numberWithInt:10],
                                  @"dict":dict};

        NSArray * allkeys = [dictbl allKeys];
        NSLog(@"allkeys %@",allkeys);

        //1、for遍历
        for (int i = 0; i < allkeys.count; i++) {
            NSString * key = [allkeys objectAtIndex:i];
            //如果字典中存储了多种不同的类型,那么最好用id类型去接收它
            id obj = [dictbl objectForKey:key];
            NSLog(@"obj %@",obj);
        }

        //2、枚举器
        NSEnumerator * enumerator2 = [dictbl objectEnumerator];
        id value;
        while (value = [enumerator2 nextObject]) {
            NSLog(@"value %@",value);
        }


    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值