字典(Dictionary)
1、字典是OC中特有的类型,用于存放OC的对象
2、字典中的对象是没有顺序的
3、字典中的对象是以【键值对】的形式出现的
4、键是为了查找值而存在的,是为了快速的查找到值
5、任何对象都可以作为键,但是常用字符串作为键
6、key是唯一的不可能出现多个相同的key
OC中字典分为不可变字典(NSDictionary)和可变字典(NSMutableDictionary)
一、不可变字典(NSDictionary)
1、创建
① 、NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3", nil];
//其中:@"one",@"1"、@"two",@"2"、@"three",@"3"是三个不同的键值对 @"1",@"2",@"3"是键,@"one",@"two",@"three"是值
②、直接创建
NSDictionary *dic3 = @{@"1":@"Mon",@"2":@"Tue",@"3":@"Wed"};
③、通过所有的键和所有的值创建
NSDictionary *dic4 = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
④、通过一个字典创建另一个字典
NSDictionary *dic5 = [NSDictionary dictionaryWithDictionary:dic4];
2、返回键值对个数
NSUInteger count = [dic3 count];
3、通过键返回值
NSString *str = [dic2 objectForKey:@"2"];
词典类的存在就是为了解决在大量数据中查找方便,因为它是通过 key 直接找到 value 所以速度很快,避免一个个的遍历寻找造成的效率低下,善用字典类会帮 你的程序提速。
4、返回所有的键或值
//返回所有的键
NSArray *keys = [dic1 allKeys];
//返回所有的值
NSArray *values = [dic1 allValues];
5、快速枚举遍历字典
for (id obj in dic3) {
//遍历字典只能遍历键,可以通过键找到值
NSLog(@"%@", [dic3 objectForKey:obj]);
}
二、可变字典(NSMutableDictionary)
NSMutableDictionary 是NSDictionary的子类,所以继承了NSDictionary的方法。
NSMutableDictionary*dict=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"1",@"one",@"2",@"two",@"3",@"three",@"4", @"four", nil];
1、设置字典
[mDic setDictionary:@{@"1":@"A",@"2":@"B"}];
2、添加或设置键值对
[mDic setValue:@"C" forKey:@"3"];
//若添加的键值对的键不存在,则会直接添加
[mDic setValue:@"D" forKey:@"3"];
//若添加的键值对的键已存在,则会修改该键对应的值
3、删除键值对
//根据键删除对应的键值对
[mDic removeObjectForKey:@"2"];
//删除某个数组中包含的键对应的键值对
[mDic removeObjectsForKeys:@[@"1",@"2"]];
//删除所有的键值对
[mDic removeAllObjects];