php字典遍历,OC中的遍历数组和字典

什么是遍历 ?

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

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

ee01ee6622f9

遍历数组(图1)

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

ee01ee6622f9

遍历字典(图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);

}

遍历字典

由于字典是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遍历

遍历数组

NSArray *array = @[@"大连",@"上海",@"北京",@"杭州"];

// 数组array中存放的数据类型是NSString

for (NSString *str in array) {

NSLog(@"%@", str);

}

遍历字典

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

for (NSString *key in dic) {

NSLog(@"%@ : %@", key, [dic objectForKey:key]);

}

三、枚举器

遍历数组

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);

}

遍历字典:

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

NSEnumerator *enumerator2 = [dic objectEnumerator];

id value2 = nil;

while (value2 = [enumerator2 nextObject]) {

NSLog(@"%@", value2);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值