字典是一个无序的集合,也可称之为键值对。与数组不同的是字典可以通过特定的key快速查找到想要的值,而不用遍历字典。所以一个唯一的key只能对应一个值,而多个key可以对应同一个值。字典分为不可变字典(NSDictionary)和可变字典(NSMutableDictionary)。本篇文章只介绍NSDictionary。。。
1、不可变字典的创建(注意书写规范)
1>初始化创建字典
NSDictionary* dict1=[[NSDictionary alloc]initWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3", nil]; //实例方法
NSDictionary* dict2=[NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3", nil]; //类方法
2>通过键值数组创建字典
NSDictionary* dict3=[[NSDictionary alloc]initWithObjects:@[@"v1",@"v2",@"v3"] forKeys:@[@"k1",@"k2",@"k3"]]; //实例方法
NSDictionary* dict4=[NSDictionary dictionaryWithObjects:@[@"v1",@"v2",@"v3"] forKeys:@[@"k1",@"k2",@"k3"]];//类方法
3>通过已有的字典创建
NSDictionary* dict5=[[NSDictionary alloc]initWithDictionary:dict1];//实例方法
NSDictionary* dict6=[NSDictionary dictionaryWithDictionary:dict1];//类方法
4>最简单的方式
NSDictionary *dict7=@{@"k1":@"v1", @"k2":@"v2", @"k3":@"v3"};
2、遍历字典
NSDictionary *dict1=@{@"k1":@"v1", @"k2":@"v2", @"k3":@"v3"};
//通过key查找value
NSString* obj=[dict1 objectForKey:@"k3"];
NSLog(@"value:%@", obj);
//获取所有的key
NSArray *keys=[dict1 allKeys];
NSLog(@"所有的键:%@", keys);
//获取所有的值
NSArray *values=[dict1 allValues];
NSLog(@"所有的值:%@", values);
//快速枚举法遍历 **枚举的是key**
for(id obj in dict1)
{
NSLog(@"key:%@", obj); //键
NSLog(@"value:%@", [dict1 objectForKey:obj]); //值
}
//枚举器法 objectEnumerator 枚举的是值
NSEnumerator *enumerator=[dict1 objectEnumerator];
id obj;
while(obj=[enumerator nextObject])
{
NSLog(@"枚举器法obj:%@",obj);
}
//枚举器法 枚举键
NSEnumerator *kenumerator=[dict1 keyEnumerator];
id key;
while(key=[kenumerator nextObject])
{
NSLog(@"键枚举器法key:%@",key);
}
//字典的长度
NSUInteger count=dict1.count;
NSLog(@"字典一共有%lu个键值对",count);
打印结果