Foundation框架中的静态字典

看官们,我们在前面章回中介绍了Foundation框架中的集合,本章回中将介绍Foundation框架中的字典。


字典和集合类似,表示多个对象存放在一起的容器,不过字典中的对象不是单个对象,而是键值对,其中的键和值必须是对象类型,而且每个键不能相同,每个键通过哈希值来确认是否相同,这点和集合一样。


字典有两个分类:静态字典和动态字典,静态字典表示字典中的元素不可以被修改,反之可以修改的称为动态字典。这点和数组以及集合是一样的。静态字典使用NSDictionary类来表示,动态字典使用NSMutableDictionary类来表示。明白字典的概念和分类后,我们介绍与字典相关的操作。


初始化


初始化字典可以使用大括号或者dictionaryWithObject:forKey:方法,该方法有两个参数,第一个参数为值,第二参数为键。使用大括号初始化字典时键值对之间使用冒号分隔开。

还有一种常用的方法是使用dictionaryWithObjects:forKeys:方法来初始化,该方法有两个参数,参数类型都是NSArray,第一个参数表示字典中所有的值,第二个参数表示字典所有的键。该方法也可以当作是把数组转化成字典方法。

获取字典中的键和值


有时候需要获取字典中的键和值,我们可以使用allKeys方法和allValues方法,这两个方法分别返回字典中所有的键和所有的值,返回键或者值存储在NSArray类型的数组中。该方法也可以当作是把字典转化成数组的方法。


通过键获取字典中的值


刚才介绍了获取字典中所有键和值的方法,也可以获取单个的值,通常使用objectForKey:方法来实现,该方法中的参数表示字典中的键,调用该方法时将返回与参数相对应的值。除此之外,我们还可以使用中括号来获取值,我们给一个简单的示例代码:value = dictionary[key];

使用枚举遍历字典


字典的遍历可以借助字典中的键来完成,首先获取字典中所有的键然后遍历所有键,同时通过键获取到与其对应的值,这样就间接完成了字典的遍历。


看官们,字典中还有其它的操作,我们就先不详细介绍了,大家可以参考官方文档。下面是我们提供的示例代码,大家可以结合上面的理论知识来分析代码。

#include<Foundation/Foundation.h>

int main() {

	//初始化字典
	NSDictionary *dic1 = @{@1:@"aa",@3:@"cc",@2:@"bb"};
	NSDictionary *dic2 = [NSDictionary dictionaryWithObject:@"aa" forKey:@1];

	//使用数组初始化字典
	NSArray *keys = [NSArray arrayWithObjects:@1,@3,@2,nil];
	NSArray *values = [NSArray arrayWithObjects:@"one",@"three",@"two",nil];
	NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:values forKeys:keys];

	//获取字典中的key和value
	NSArray *allKey = [dic3 allKeys];
	NSArray *allValue = [dic3 allValues];

	NSLog(@"%@ key: %@ value: %@",dic1,allKey,allValue);

	//通过键获取值
	NSLog(@"%@, value: %@",dic2,[dic2 objectForKey:@1]);
	NSLog(@"%@, value: %@",dic2,dic2[@1]);
	NSLog(@"%@",dic3);

	//遍历字典
	for(NSString *key in allKey) {
		NSLog(@" %@ : %@",key,[dic3 objectForKey:key]);
	}

	return 0;
}


在代码中我们添加了相关的注释,以方便大家理解代码。程序中字典的元素比较少,大家可以直接判断出运行结果,因此我们就不展示程序运行结果了,不过大家一定要自己动手运行程序,一边分析代码,一边对比程序运行结果是否符合代码分析的结果。


最后我们对本章回的内容做一个总结:

  • 1.字典中的元素是键值对,键和值必须是对象类型,而且字典中不能有重复的键;
  • 2.字典初始化可以使用大括号或者类提供的相关方法;
  • 3.字典可以和数组进行相互转换,转换时使用相应的方法就可以;
  • 4.可以获取字典中所有的键和值,也可以通过某个键获取与其对应的值,获取方法有两种;
  • 5.遍历字典可以通过遍历字典的键间接实现,常用枚举的方式来遍历字典;
  • 6.字典分静态和动态两种形式,以上所有的操作都不会修改原来字典中的内容;


看官们,本章回的内容就介绍到这里,欲知后事如何且听下回分解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值