一、NSDictionary的介绍:
- NSDictionary翻译过来叫做”字典”
- 日常生活中, “字典”的作用:通过一个拼音或者汉字,就能找到对应的详细解释
- 类似通过一个key,就能找到对应的value。
- NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改
二、NSDictionary的初始化:
//简便写法,最常用
NSArray *arr = @[@"语文",@"数学"]
NSDictionary *dict = @{
@"name":@"小明",
@"age":@"13",
//value是OC的对象即可
@"student":arr
};
NSLog(@"dict - name - %@",[dict objectForKey:@"name"]);
/**
* 2.keys and values-dictionaryWithObjectsAndKeys
先写vlaue,再写key
一对一对写
别忘了nil
*/
NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"小明",@"name",@"13",@"age",nil];
NSLog(@"dict2 - name - %@",[dict2 objectForKey:@"name"]);
/**
* 3.dictionaryWithObjects - forKeys
*/
NSDictionary *dict3 = [NSDictionary dictionaryWithObjects:@[@"小明",@"13"]forKeys:@[@"name",@"age"]];
NSLog(@"dict3 - name - %@",[dict3 objectForKey:@"name"]);
三、NSDictionary的常见使用:
NSArray *book = @[@"语文",@"数学",@"英语"];
NSDictionary *dict = @{
@"name":@"小明",
@"age":@"13",
@"sex":@"男",
@"subject":book
};
//dict[@"name"] - 根据key值获取value
NSLog(@"dict - name - %@", dict[@"name"]);
//等同于
[dict objectForKey:@"name"];
//返回字典中有多少对key和value
NSLog(@"dict - name - %lu", (unsigned long)dict.count);
//获取所有的key 等同于dict.allKeys
[dict allKeys];
//获取所有的value 等同于 dict.allValues
[dict allValues];
//NSDictionary的遍历
for (NSString *key in dict.allKeys) {
NSLog(@"%@ : %@",key,[dict objectForKey:key]);
}
四、NSMutableDictionary的介绍及使用:
- NSMutableDictionary是NSDictionary的子类
- NSDictionary是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素
- NSMutableDictionary是可变的,随时可以往里面添加\更改\删除元素.
/**
* 1.NSdictary可以用的初始化发放,NSMutableDictionary都可以用
建立空字典方法
*/
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
//2.通过另一个字典创建一个NSMutableDictionary - dictionaryWithDictionary
NSDictionary *dict2 = @{
@"name":@"小明",
@"age":@"13"
};
NSMutableDictionary *dict3 = [NSMutableDictionary dictionaryWithDictionary:dict2];
//dict3等价dict4
NSMutableDictionary *dict4 = [dict2 mutableCopy];
//增 - 前面是value后面是key
[dict3 setObject:@"男" forKey:@"sex"];
//等价
//如果这个key已经存在,修改它的值
//如果不存在就是增加一个key-value
dict3[@"sex"] = @"男";
//通过aKey删除对应的value
[dict3 removeObjectForKey:@"sex"];
//删除所有的键值对
[dict3 removeAllObjects];
//改
[dict3 setObject:@"男" forKey:@"sex"];
dict3[@"sex"] = @"男";
//查找key对应的value
dict3[@"sex"];