字典:像新华字典一样,
根据拼音偏旁(key)查找想要的:值
字典不是按顺序排放的
key 是一个关键字,可以通过关键字搜索对应的内容
NSDictionary:字典
字典里面的内容是成对出现的(key:值)
key是一个关键字(字符串)
值:只要是object类型的数据都可以
一、字典:key - 值 对应存在的 数据集合
字典是根据 key 来取值
key 在字典里面 是唯一的
二、字典的赋值和初始化
1、直接赋值
NSDictionary *dic = @{@"key":@"值",@"key1":@"值"};
直接取值:dic[@"key"]
2、初始化
NSDictionary *dic = [[NSDictionary alloc]init];
NSDictionary *dic = [NSDictionary dictionary];
NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"值"forKey:@"key"];
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhi",@"key", nil];
三、通过方法 取值:
[字典名 objectForKey:@"key"];
获得字典里面所有的值allValues
获得字典里面所有的键allKeys
四、可变字典:NSMutableDictionary
--------不可变字典转换可变字典-------
NSMutableDictionary *可变字典= [NSMutableDictionary dictionaryWithDictionary:不可变字典];
可变字典的初始化 也不可以使用直接赋值@{};
不可变字典的初始化方法 可变字典都可以使用
1、添加一对元素
[字典名 setObject:zhi forKey:key];
2、删除元素
删除一个元素:[字典名 removeObjectForKey:@"key"];
删除多个元素:[字典名 removeObjectsForKeys:key的数组];
删除全部元素:[字典名 removeAllObjects];
3、替换 存在这个key就是替换
[字典名 setObject:zhi forKey:key];
4、查找
通过key查找
字典名[key];
[字典名 objectForKey:@"key"];
正文
#pragma ----- 初始化字典并赋值-----
//(1)直接赋值 字典直接赋值用花括号@{};
// key 不能一样
NSDictionary *dic = @{@"key":@"值",@"key1":@"值"};
//字典嵌套字典
NSDictionary *dic = @{@"age":@"20",@"Like":@{@"Sports":@"PingPang",@"Art":@"SuMiao",@"Music":@"Sing"}};
//打印出来的结果用花括号引起来,每个元素后面都有一个分号;都是成对出现。
NSDictionary *size2 = @{@"name":@"磊欧巴",@"age":@"21",@"face":@"鹅蛋脸",@"height":@"178",@"sex":@"男",@"weight":@"60"};
NSLog(@"%@",size);
NSLog(@"%@",size2);
#pragma --------字典取值----
// 在同一个字典里面 key必须是唯一的
// 可以通过key取值
// 公式:字典名【@“key名”】
// NSString *name = size2[@"name"];
// NSLog(@"%@",name);
#pragma ----遍历字典------
//需要所有的key
//allkey 可以获得字典里面所有的key
//allValues 可以获得字典里面所有的值
NSArray *allkey = size2.allKeys;
for (NSString *key in allkey) {
NSLog(@"%@ = %@",key,size2[key]);
}
#pragma --------其他初始化方式----
NSDictionary *dic = [NSDictionary dictionary];
NSDictionary *dic = [[NSDictionary alloc]init];
//‼️‼️‼️‼️‼️值和key要成对出现,先写值,key每对元素也是用逗号分开
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"值",@"key",@"值2",@"key",nil];
//字典取值的方法 objectForKey
NSString *value = [dicobjectForKey:@"key"];
NSDictionary *baby = [NSDictionary dictionaryWithObjectsAndKeys:@"磊欧巴",@"name",@"sleep",@"like",@"安以轩",@"love", nil];
NSDictionary *boy = [NSDictionary dictionaryWithObjectsAndKeys:@"高傻",@"name",@"ha",@"like",@"hahaha",@"love", nil];
NSString *value = [baby objectForKey:@"name"];
NSString *value1 = [boy objectForKey:@"name"];
NSLog(@"%@",value);
NSLog(@"%@",value1);
for (NSString *key in boy.allKeys) {
NSLog(@"%@ = %@",key,boy[key]);
}
#pragma ------初始化,并且附一个值---
NSDictionary *dic = [NSDictionary dictionaryWithObjects:@"值"forKeys:@"key"];
#pragma ------可变字典 赋值----
//不可以直接赋值@{};
(1) NSMutableDictionary *dic = [NSMutableDictionary dictionary];
(2) NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
#pragma --------可变字典 增-----
//添加相同的key 会覆盖原有的key的值
NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
[dic setObject:@"内容:背着书包去上学"forKey:@"content"];
[dic setObject:@"高傻"forKey:@"name"];
NSLog(@"%@",dic);
#pragma ---------可变字典 删----
//指定key 删除key对应的值
//删除一个
[dic removeObjectForKey:@"key"];
//删除多个
[dic removeObjectsForKeys:@"key1",@"key2"];
//会移除数组里面所有key对应的值
NSArray *keys = @[@"content",@"name"];
[dic removeObjectsForKeys:keys];
NSLog(@"%@",dic);
#pragma --------可变字典 改--------
//修改和添加一样 如有有相同的key就是覆盖 没有的话就是添加
[a setObject:@"一个雨夜" forKey:@"相同的key"];
#pragma ------可变字典 查----