码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C中字典的使用方法总结

时间:2016-07-24 10:34:14      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

在Objective-C中提供了两个类来实现字典,即NSDictionaryNSMutableDictionary。其中,NSMutableDictionary是NSDictionary的子类,它继承父类方法的同时又支持对数据进行插入和删除操作,它们共同实现了以“键值对”的方式存储数据。

// Objective-C中实现的字典相比于其他语言而言,还有一个最大的不同:即同一个字典中可以保存不同类型的对象。

1 NSDictionary

1.1 创建不可变字典

可以使用类方法dictionaryWithObjectsAndKeys:创建并初始化字典,示例如下:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                              @"val1", @"key1",
                              @"val2", @"key2", nil];

注意:在使用键值对初始化字典时,“值”在前,“键”在后,成对出现,各个参数之间使用逗号分隔,并且最后使用nil结束。使用以上方法创建的字典内存分布如下图所示:

技术分享

1.2 获取字典大小

在执行字典操作之前,常常需要获取字典大小,也就是确定字典中“键值对”的数量,我们可以使用count消息,使用方法如下:

int cnt = [dict count];

该方法会返回一个NSInteger类型的变量,我们也可以直接使用int类型的变量接收。

1.3 得到字典中所有的KEY

对字典发送keyEnumerator消息可以返回一个枚举对象,其中存储了字典中所有的键:

NSEnumerator *enumKeys = [dict keyEnumerator];
for (NSObject *obj in enumKeys){
    NSLog(@"enumKey: %@", obj);
}

使用“for-in”语法可以实现可枚举对象的遍历,以上代码中的循环可以遍历所有键,并且输出:

2016-07-24 10:03:11.873 OCTest[2547:94272] enumKey: key1
2016-07-24 10:03:13.753 OCTest[2547:94272] enumKey: key2

注意:如果我们直接使用"for-in"语法遍历字典对象,实际上也相当于对“键”的遍历。

for (NSObject *obj in dict){
    NSLog(@"key in dic: %@", obj);
}

执行以上代码的输出为:

2016-07-24 10:10:17.590 OCTest[2667:97958] key in dic: key1
2016-07-24 10:10:17.590 OCTest[2667:97958] key in dic: key2

1.4 遍历字典中的所有VALUE

可以使用获取“键”类似的方法获取字典中的“值”,只需要对字典发送objectEnumerator消息即可:

NSEnumerator *enumValues = [dict objectEnumerator];
for (NSObject *obj in enumValues){
    NSLog(@"value in dic: %@", obj);
}

运行结果如下:

2016-07-24 10:14:41.984 OCTest[2702:100424] value in dic: val1
2016-07-24 10:14:41.984 OCTest[2702:100424] value in dic: val2

1.5 根据KEY检索VALUE

对于字典而言,最常见的操作就是查找了,也就是根据给定的KEY,检索对应的VALUE,方法如下:

NSObject *value = [dict objectForKey:@"key1"];
if (value != nil){
    NSLog(@"value in dict: %@", value);
}

运行结果如下:

2016-07-24 10:20:09.012 OCTest[2736:103393] value in dict: val1

 

Objective-C中字典的使用方法总结

标签:

原文地址:http://www.cnblogs.com/xiaomanon/p/5700195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!