OC_字典
来源:互联网 发布:lvmh招聘 知乎 编辑:程序博客网 时间:2024/06/04 19:45
*不可变字典*
不可变字典的定义
// 初始化定义一个空的字典NSDictionary *dic = [[NSDictionary alloc] init];// 便利器构造器定义一个空的字典NSDictionary *dic = [NSDictionary dictionary];// 字面量定义一个字典NSDictionary *dic = @{@"1" : @"2", @"3" : @"4", @"5" : @"6", @"7" : @"8"};// 初始化定义一个字典NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"1", @"2", @"3", @"4", nil];// key是唯一的, 但是value可以重复// key不能为空
count 当前有多少键值对
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"1", @"2", @"3", @"4", nil];NSLog(@"%ld", dic.count);
objectForKey: 通过对应的key找到相应的value
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"1", @"2", @"3", @"4", nil];NSLog(@"%@", [dic objectForKey:@"2"]);//也可以NSLog(@"%@",dic[@"2"]);
获取字典里所有的key 和 value
NSLog(@"%@", dic.allKeys);NSLog(@"%@", dic.allValues);
可变字典
可变字典的定义
// 空的字典NSMutableDictionary *dic = [NSMutableDictionary dictionary];// 非空字典NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1", @"2", @"3", @"4", @"5", @"6", nil];
forin 遍历字典
// forin 的前部分是字典里的keyNSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1", @"2", @"3", @"4", @"5", @"6", nil];for (NSString *str in dic) { NSLog(@"%@", [dic objectForKey:str]);}
setObject:
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1", @"2", @"3", @"4", @"5", @"6", nil];// 对可变的字典,当前的key不存在的时候,进行键值对的添加,当key存在了,进行值的修改[dic setObject:@"7" forKey:@"8"];NSLog(@"%@", dic);[dic setObject:@"100" forKey:@"6"];NSLog(@"%@", dic);
removeObjectForKey: 移除键值对
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1", @"2", @"3", @"4", @"5", @"6", nil];[dic removeObjectForKey:@"8"];NSLog(@"%@", dic);// 移除所有键值对[dic removeAllObjects];NSLog(@"%@", dic);
字典里嵌套数组
NSArray *arr1 = @[@"1", @"2", @"3", @"4"];NSArray *arr2 = @[@"5", @"6", @"7", @"8"];NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:arr1, @"arr1", arr2, @"arr2", nil];for (NSString *str in dic) { // 针对对应的key找到value, value是一个数组,所以用一个数组对象来接受 NSArray *arr = dic[str]; //也可以NSArray *arr = [dic objectForKey:str]; for (NSString *temp in arr) { NSLog(@"%@", temp); }}
数组里嵌套字典
NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"杨林", @"name", @"19", @"age", nil];NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"李牧燃", @"name", @"22", @"age", nil];NSMutableDictionary *dic3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"腾飞", @"name", @"23", @"age", nil];NSArray * arr = @[dic1, dic2, dic3];for (NSMutableDictionary *dic in arr) { for (NSString *str in dic) { NSLog(@"%@", dic[str]); }}
字典里嵌套数组再嵌套字典
NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"杨林", @"name", @"19", @"age", nil];NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"李牧燃", @"name", @"22", @"age", nil];NSMutableDictionary *dic3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"腾飞", @"name", @"23", @"age", nil];NSArray *arr1 = @[dic1, dic2];NSArray *arr2 = @[dic3];NSDictionary *bigDic = [NSDictionary dictionaryWithObjectsAndKeys:arr1, @"arr1", arr2, @"arr2", nil];for (NSArray *arr in bigDic) { NSArray *temp = bigDic[arr]; for (NSMutableDictionary * dic in temp) { for (NSString *str in dic) { NSLog(@"%@", dic[str]); } }}
省市区字典数组
// 准备工作NSString *path = @"/Users/dlios/Documents/OC_省市区字典数组/OC_省市区字典数组/area.txt";// 根据路径产生相应的字符串NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];// 对字符串逐行进行切割NSArray *strArr = [str componentsSeparatedByString:@"\n"];// 创建一个省数组NSMutableArray *proArr = [NSMutableArray array];for (NSString *temp in strArr) { if (![temp hasPrefix:@" "]) { // 创建一个省字典 NSMutableDictionary *proDic = [NSMutableDictionary dictionary]; // 给省字典添加键值对 // 省名 [proDic setObject:temp forKey:@"proName"]; // 创建一个市数组 NSMutableArray *cityArr = [NSMutableArray array]; // 添加到省字典里 [proDic setObject:cityArr forKey:@"cityArr"]; // 把省字典添加到省数组里 [proArr addObject:proDic]; } else if ([temp hasPrefix:@" "] && ![temp hasPrefix:@" "]){ // 创建一个市字典 NSMutableDictionary *cityDic = [NSMutableDictionary dictionary]; // 给市字典添加键值对 // 市名 [cityDic setObject:temp forKey:@"cityName"]; // 创建一个区数组 NSMutableArray *zoneArr = [NSMutableArray array]; // 添加到市字典里 [cityDic setObject:zoneArr forKey:@"zoneArr"]; // 给市字典找一个位置 // 先找到对应的省字典 NSMutableDictionary *proDic = [proArr lastObject]; // 再找到对应的市数组 NSMutableArray *cityArr = proDic[@"cityArr"]; // 将市字典添加到市数组里 [cityArr addObject:cityDic]; } else { // 先找省字典 NSMutableDictionary *proDic = [proArr lastObject]; // 市数组 NSMutableArray *cityArr = proDic[@"cityArr"]; // 市字典 NSMutableDictionary *cityDic = [cityArr lastObject]; // 区数组 NSMutableArray *zoneArr = cityDic[@"zoneArr"]; // 将区名添加到区数组里 [zoneArr addObject:temp]; }}// forin进行遍历省数组for (NSMutableDictionary *dic in proArr) { NSLog(@"%@", dic[@"proName"]); NSMutableArray *city = dic[@"cityArr"]; for (NSMutableDictionary *citydic in city) { NSLog(@"%@", citydic[@"cityName"]); NSMutableArray *zoneArr = citydic[@"zoneArr"]; for (NSString *str in zoneArr) { NSLog(@"%@", str); } }}
例题
NSMutableDictionary *book1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"三国演义", @"name", @"100", @"price", nil];NSMutableDictionary *book2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"水浒传", @"name", @"200", @"price", nil];NSMutableDictionary *book3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"西游记", @"name", @"300", @"price", nil];NSMutableArray *arrBook = [NSMutableArray arrayWithObjects:book1, book2, book3, nil];for (NSMutableDictionary *dic in arrBook) { // if ([dic[@"name"] isEqualToString:@"水浒传"]) { if ([[dic objectForKey:@"name"] isEqualToString:@"水浒传"]) { // dic[@"price"] = @"100"; [dic setObject:@"100" forKey:@"price"]; }}for (NSMutableDictionary *dic in arrBook) { NSLog(@"%@, %@", dic[@"name"], dic[@"price"]);}
0 0
- OC_字典
- OC_字典
- OC_字典
- OC_省市区字典
- OC_省市区字典数组
- OC_省市区字典
- OC_省市区字典
- OC_学习_数组,字典,集合
- OC_字典(可变不可变都有^_^)
- iOS前期OC训练OC_省市区字典数组
- Oc_总结
- OC_类
- OC_语法
- OC_语法
- OC_语法
- OC_语法
- OC_继承
- OC_属性
- android解决相机开关的问题
- git学习笔记-6 git reset(重置)
- vi与gedit的区别
- 关于stm32用J-link,ITM机制下动态调试
- git学习笔记-7 git checkout 切换分支
- OC_字典
- [Leetcode]-Minimum Path Sum
- git-学习笔记8 git stash
- poj1655解题报告(树的质心)
- 关于自定义函数导致SQL查询过慢的解决方案
- 导入maven项目pom.xml文件报错
- 用D3.js进行医疗数据可视化 (三)坐标轴 (Axes)
- SCI收录期刊——遥感学科
- JVM工作原理小记