[Foundation] NSArray、NSDictionary历遍方法


  • Statement(可正向反向)-用index递增或递减的方式去抓取内容(最没效率)

//NSArray
NSArray* arrayItems = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];
for (int i = 0; i < [arrayItems count]; ++i) {
        NSNumber* number = [arrayItems objectAtIndex:i];
}
//NSDictionary
NSDictionary* dicItems = @{@1:@"1",@2:@"2",@3:@"3",@4:@"4",@5:@"5",@6:@"6",@7:@"7"};
NSArray* keys = [dicItems allKeys];
    for (int i =0; i< [keys count]; ++i) {
        NSNumber* keyNumber = [keys objectAtIndex:i];
    }

  • For in-这种方式可以直接抓到value,但若需要index还是要另外使用另外一个API,或是一开始用区域变数计算进去回圈的次数

//NSArray
NSArray* arrayItems = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];
for (NSNumber* number in arrayItems){
    }
//NSDictionary
NSDictionary* dicItems = @{@1:@"1",@2:@"2",@3:@"3",@4:@"4",@5:@"5",@6:@"6",@7:@"7"};
for (NSNumber* keyNumber in [dicItems allKeys]){
    }

  • Block(可正向反向)-个人比较偏爱用这种方式,NSArray也是这种方式最快速

//NSArray
NSArray* arrayItems = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];
[arrayItems enumerateObjectsUsingBlock:^(NSNumber* number, NSUInteger idx, BOOL *stop) {
    }];
//NSDictionary
NSDictionary* dicItems = @{@1:@"1",@2:@"2",@3:@"3",@4:@"4",@5:@"5",@6:@"6",@7:@"7"};
[dicItems enumerateKeysAndObjectsUsingBlock:^(NSNumber* keyNumber, NSString* value, BOOL *stop) {
}];

  • Enumerator(可正向反向)-这种方式我比较不常用,但也比第1、2种快多了

//NSArray
NSArray* arrayItems = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];
NSEnumerator* enumerator = [arrayItems objectEnumerator];
    NSNumber* number;
    while (number =[enumerator nextObject]) {
    }
//NSDictionary
NSDictionary* dicItems = @{@1:@"1",@2:@"2",@3:@"3",@4:@"4",@5:@"5",@6:@"6",@7:@"7"};
NSEnumerator* enumerator = [dicItems keyEnumerator];
    NSNumber* keyNumber;
    while (keyNumber = [enumerator nextObject]) {
    }


以上Demo网址如下:

https://github.com/joyce-328/TraversalArrayDictionary.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值