//不可变字典&初始化字典
//NSDictionary *dic = [NSDictionary dictionaryWithObjects:@[@"lijun",@"22",@"man"] forKeys:@[@"name:",@"age:",@"sex:"]];//这种方式无法取出某一个key的value值
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"lijun",@"name",@"22",@"age",@"man",@"sex",nil];
//遍历字典
for (NSString *key in dic) {
NSString *value = dic[key];
NSLog(@"key=%@ value=%@",key,value);
}
//遍历字典
[dic enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
NSLog(@"%@ %@",key,obj);
}];
//将dic赋值给dic1
NSDictionary *dic1 = [NSDictionary dictionaryWithDictionary:dic];
NSLog(@"%@ %lu",dic1,[dic1 count]);
//获取字典中所有的key和value
NSArray *str = [dic allKeys];
NSLog(@"%@",str);
NSLog(@"%@",[dic1 allValues]);
//获取 name 的 value
NSLog(@"%@",[dic1 objectForKey:@"name"]);
//可变字典&可变字典的增删
//通过类方法直接赋值
NSMutableDictionary *dicM = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lijun",@"name",@"18000238987",@"phone",nil];
//也可以通过实例方法开辟空间并赋值
NSMutableDictionary *dicM1 = [[NSMutableDictionary alloc]
initWithObjectsAndKeys:@"alin",@"name",@"18000238833",@"phone",
@"5110424248",@"code",@"cd",@"adress",nil];
//[dicM setObject:dicM1 forKey:dic];
[dicM1 setValue:@"girl" forKey:@"sex"];//添加一对键值
NSLog(@"%@",dicM);
NSLog(@"%@",dicM1);
//创建一个可变空字典
NSMutableDictionary *dicM2 = [NSMutableDictionary dictionary];
[dicM2 setDictionary:dicM];//将dicM1赋给dicM2
[dicM2 setDictionary:dicM1];//在这里又进行一次赋值,会覆盖之前的内容
NSLog(@"%@",dicM2);
//通过key删除值
[dicM2 removeObjectForKey:@"phone"];//删除了电话号码
NSLog(@"%@",dicM2);
//删除多个键值
//NSArray *a = [NSArray arrayWithObjects:@"name",@"sex",nil];
NSArray *a = @[@"name",@"sex"];
[dicM2 removeObjectsForKeys:a];
NSLog(@"%@",dicM2);
//删除所有键值
[dicM2 removeAllObjects];
NSLog(@"%@",dicM2);
//一般方法遍历字典
for (int index=0;index<[dicM2 count]; index++) {
NSString *object=[dicM2 objectForKey:[[dicM2 allKeys]objectAtIndex:index]];
NSLog(@"object:%@",object);
}
//快速枚举
NSLog(@"快速枚举");
for (NSString *key in dicM2) {
NSString *object=[dicM2 objectForKey:key];
NSLog(@"object:%@",object);
}
NSLog(@"使用枚举类型");
//使用枚举类型
NSEnumerator *enumerator=[dicM2 keyEnumerator];
id key;
while(key=[enumerator nextObject]){
id object=[dicM2 objectForKey:key];
NSLog(@"object:%@",object);
}