OC中的遍历数组和字典

作者: 徊家喂猪 | 来源:发表于2016-03-31 19:17 被阅读3867次

什么是遍历 ?

最近总有刚接触编程的朋友问我什么是遍历? 那是用来干什么用的? 今天就来解释一下遍历以及在OC中的具体用法

在众多计算机程序语言中,数组是必不可少的数据类型。而所谓遍历就是沿着某条搜索路线依次对每个节点做依次且仅做一次的访问。具体到遍历数组,就是按照数组下标依次访问或操作数组的每个元素。如下图所示。

遍历数组(图1)

OC中的字典,其实与数组很像。数组(如图1)是下标与数组元素的对应,而字典,则是key与value的对应。学过PHP的人应该都很容易理解,因为PHP中的数组就是key与value的对应。


遍历字典(图2)
一、for循环遍历

1)遍历数组

NSArray *array = [NSArray arrayWithObjects:@"大连", @"北京", @"上海", @"成都", @"深圳", @"天津", nil];

// array.count 可以返回数组一共有几项
for (NSInteger i = 0; i < array.count; i++) {
    //将对应下标的对象赋值给str,然后打印
    NSString *str = array[i];
    NSLog(@"%@", str);
}
  1. 遍历字典

由于字典是key与value的对应, 因此没有数组那样的下标供我们遍历。但是NSDictionary提供了两个属性(allKeys 与 allValues)可以将全部的key或value取出放到数组中, 我们可以遍历取出的数组来达到遍历字典的目的。

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"张三", @"姓名", @"16", @"年龄", @"大连", @"城市", nil];
// 将所有的key取出放入数组arr中
NSArray *arr = [dic allKeys];
// 遍历arr 取出对应的key以及key对应的value
for (NSInteger i = 0; i < arr.count; i++) {
    
    NSLog(@"%@ : %@", arr[i], [dic objectForKey:arr[i]]); // dic[arr[i]]
    
}
二、for-in遍历
  1. 遍历数组

    NSArray *array = @[@"大连",@"上海",@"北京",@"杭州"];
    // 数组array中存放的数据类型是NSString
    for (NSString *str in array) {
    NSLog(@"%@", str);
    }

  2. 遍历字典

    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"张三", @"姓名", @"16", @"年龄", @"大连", @"城市", nil];

    for (NSString *key in dic) {
    NSLog(@"%@ : %@", key, [dic objectForKey:key]);
    }

三、枚举器
  1. 遍历数组

    NSArray *array = @[@"张三", @"赵四", @"小宋", @"刘能"];

    // 获取数组枚举器:(正序枚举)
    NSEnumerator *enumerator = [array objectEnumerator];

    id value = nil;

    while (value = [enumerator nextObject]) {
    NSLog(@"%@", value);
    }

    // 反向枚举:(逆序)
    enumerator = [array reverseObjectEnumerator];

    value = nil;
    while (value = [enumerator nextObject]) {
    NSLog(@"%@", value);
    }

  2. 遍历字典:

    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"张嘴", @"姓名", @"23", @"年龄", @"女", @"性别", nil];

    NSEnumerator *enumerator2 = [dic objectEnumerator];

    id value2 = nil;

    while (value2 = [enumerator2 nextObject]) {

     NSLog(@"%@", value2);
    

    }

相关文章

  • OC中的各种遍历

    OC中的各种遍历 iOS开发中我们经常遇到各种的数据处理,所以就会经常遇到数组遍历 和 字典遍历。但是不同的遍历方...

  • OC中的遍历数组和字典

    什么是遍历 ? 最近总有刚接触编程的朋友问我什么是遍历? 那是用来干什么用的? 今天就来解释一下遍历以及在OC中的...

  • OC 基础 集合遍历和数组排序

    A ------ >遍历概念 1、集合 ( collection ) OC 中提供的容器 : 数组,字典,集合 2...

  • C++ map转OC 字典

    1.遍历map取出key和value存入OC字典

  • RAC集合

    在RAC中可以使用RACSequence,来进行对数组以及字典的快速便利 1、RAC对字典进行遍历 对字典遍历出来...

  • Foundation框架---数组

    OC 数组特点: 可以存储不同类型的对象,oc的数组 只能存储对象 数组可以遍历,占用的内存空间是连续的. oc中...

  • Swift之inout关键字

    在Swift中,常用的字符串、数组和字典,由OC中的NSString、NSArray和NSDictionary转变...

  • Swift 之集合

    数组定义遍历 增/删/改 合并 字典 定义 遍历 增/删/改 合并 一 数组 定义 遍历 增删改 合并 二 字典 ...

  • Swift入坑系列—集合类型

    数组(Arrays) 字典(Dictionaries) 数组(Arrays) 在OC里面,NSArray和NSMu...

  • OC中的容器类及其功能方法:数组,字典,集合

    OC中的容器:数组,字典,集合 :容器中只能存储对象,不能存储基本和普通数据类型的数据. # 数组 不可变数组: ...

网友评论

  • Hero999:楼主的帖实在是写得太好了。文笔流畅,修辞得体,深得魏晋诸朝遗风,更将唐风宋骨发扬得入木三分,能在有生之年看见楼主的这个帖子。实在是我三生之幸啊。 :+1: :+1: :+1:

本文标题:OC中的遍历数组和字典

本文链接:https://www.haomeiwen.com/subject/ncgslttx.html