NSDictionary的用法
来源:互联网 发布:数据库是什么软件 编辑:程序博客网 时间:2024/05/06 03:10
字典有一对key-value组成,二者必须成对出现
打印结果是{}是字典,()是数组,{()}是集合
如果键值没有成对出现,会崩溃
reason: '-[__NSPlaceholderDictionary initWithObjectsAndKeys:]: second object of each pair must be non-nil. Or, did you forget to nil-terminate your parameter list?'
1.不可变字典
创建一个字典对象
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"zhangsan", @"name", @"男", @"sex", @"玩", @"hobby", nil];// NSLog(@"%@", dic); // 打印一个字典有中括号,数组用小括号代表,而且字典是一个无序的容器 // 便利构造器创建一个字典的对象 // 都是先写value,再写key,防止少写// NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"何岸", @"name", @"25", @"age", @"胖", @"hobby", nil]; // 字面量 // 冒号前面的是key,冒号后面的是Value// NSDictionary *dic1 = @{@"1":@"2", @"3":@"4", @"5":@"6"};// NSLog(@"%@", dic1);
</pre><pre name="code" class="objc">// // count是键值对数// NSLog(@"%ld", dic1.count);
// 根据对应的key进行取值// NSLog(@"%@", [dic1 objectForKey:@"1"]);// // allKeys是一个属性,返回值类型是NSArray,获取字典所有的key值// NSLog(@"%@", dic1.allKeys);// // allValue获取字典所有的value// NSLog(@"%@", dic1.allValues);
for(NSInteger i = 0; i < dic1.count; i++){// NSLog(@"%@ = %@", dic1.allKeys[i], [dic1 objectForKey:dic1.allKeys[i]]);// }// // for (NSString *str in dic1.allKeys) {// NSLog(@"%@ = %@", str, [dic1 objectForKey:str]);// }
不可变字典
创建一个空字典
// NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; // 便利构造器// NSMutableDictionary *dic = [NSMutableDictionary dictionary];
添加一个键值对:setObject
如果字典里没有对应操作的key,这个方法就是添加键值对的作用,如果有就是修改键值对的功能
// [dic setObject:@"何岸" forKey:@"name"];// NSLog(@"%@", dic); // 想修改name的值// [dic setObject:@"app" forKey:@"name"];// NSLog(@"%@", dic);字典中只能有一个key值
删除
// 把key和value成对的删除// [dic removeObjectForKey:@"name"];// NSLog(@"%@", dic);
字典和数组的互相嵌套
NSDictionary *dic1 = @{@"name":@"zhangsan", @"age":@"10"};// NSDictionary *dic2 = @{@"name":@"lisi", @"age":@"13"};// NSDictionary *dic = @{@"dic1":dic1, @"dic2":dic2}; // // 遍历// for (NSString *str in dic) {// // 找value// NSDictionary *temp = [dic objectForKey:str];// for (NSString *str in temp) {// NSLog(@"%@", [temp objectForKey:str]);// }// // }
// 数组套字典// NSArray *arr = @[dic1, dic2];// for (NSDictionary *dic in arr) {// for (NSString *str in dic) {// NSLog(@"%@", [dic objectForKey:str]);// }// }
// 字典套数组// NSArray *arr1 = @[@"松江", @"卢俊义", @"吴用", @"公孙胜"];// NSArray *arr2 = @[@"关胜", @"林冲", @"秦明", @"呼延灼"];// NSArray *arr3 = @[@"花荣", @"柴进", @"李英", @"朱仝"];// NSDictionary *dic = @{@"arr1":arr1, @"arr2":arr2, @"arr3":arr3};// for (NSString *str in dic) {// NSArray *temp = [dic objectForKey:str];// for (NSString *str in temp) {// NSLog(@"%@", str);// }// }
// 三层嵌套// NSArray *arr1 = @[@"松江", @"卢俊义", @"吴用", @"公孙胜"];// NSArray *arr2 = @[@"关胜", @"林冲", @"秦明", @"呼延灼"];// NSArray *arr3 = @[@"花荣", @"柴进", @"李英", @"朱仝"];// NSArray *arr4 = @[@"徐晃", @"张辽", @"许褚", @"典韦"];// NSArray *arr5 = @[@"马腾", @"马超", @"马岱", @"马铁"];//// NSDictionary *dic1 = @{@"arr1":arr1, @"arr2":arr2};// NSDictionary *dic2 = @{@"arr3":arr3, @"arr4":arr4};// NSDictionary *dic3 = @{@"arr5":arr5};// NSArray *arr = @[dic1, dic2];// for (NSDictionary *dic in arr) {// for (NSString *str in dic) {// NSArray *temp = [dic objectForKey:str];// for (NSString *str in temp) {// NSLog(@"%@", str);// }// }// }
// NSArray *arr1 = @[@"松江", @"卢俊义", @"吴用", @"公孙胜"];// NSArray *arr2 = @[@"关胜", @"林冲", @"秦明", @"呼延灼"];// NSArray *arr3 = @[@"花荣", @"柴进", @"李英", @"朱仝"];// NSArray *arr4 = @[@"徐晃", @"张辽", @"许褚", @"典韦"];// NSArray *arr5 = @[@"马腾", @"马超", @"马岱", @"马铁"];// NSArray *bigArr1 = @[arr1, arr2];// NSArray *bigArr2 = @[arr3, arr4, arr5];// NSDictionary *dic = @{@"big1":bigArr1, @"big2":bigArr2};// for (NSString *str in dic) {// NSArray *arr = [dic objectForKey:str];// for (NSArray *tempArr in arr) {// for (NSString *strArr in tempArr) {// NSLog(@"%@", strArr);// }// }// }
集合
不可变集合
集合的创建和数组差不多,用便利构造器创建一个集合对象,集合里的元素不可以重复,如果重复,那么重复的部分将被删除
这是最重要的应用:利用集合的没有重复元素的特点,会把数组变成集合,去掉重复的部分再转换回来
// 将数组中重复的元素去除// NSArray *arr = @[@"8", @"1", @"2", @"3", @"1", @"3"];// NSSet *set = [NSSet setWithArray:arr];// NSLog(@"%@", set);// // allObject属性是将集合转换成数组的作用// NSArray *newArr = set.allObjects;// NSLog(@"%@", newArr);
NSLog(@"%ld", set2.count);// // 返回一个元素,但是不保证是一个随机的数// NSLog(@"%@", [set anyObject]);// // 判断集合里有没有元素// BOOL result = [set containsObject:@"d"];// NSLog(@"%d",result);
遍历
// for进行遍历// for (NSString *str in set) {// NSLog(@"%@", str);// }// // for(NSInteger i = 0; i < set.count; i++){// NSLog(@"%@", set.allObjects[i]);// }
0 0
- NSDictionary 的用法
- NSDictionary 的用法
- NSDictionary的用法
- NSDictionary的用法
- NSArray , NSDictionary 的用法...
- NSDictionary的一些用法
- NSDictionary的常见用法总结
- NSArray 与 NSDictionary 的用法
- NSDictionary的常见用法总结
- NSDictionary和NSMutableDictionary的用法
- NSDictionary的常见用法总结
- NSDictionary的常见用法总结
- NSDictionary的常见用法总结
- NSDictionary、NSMutableDictionary的基本用法
- NSDictionary、NSMutableDictionary的基本用法
- NSDictionary、NSMutableDictionary的基本用法
- NSDictionary、NSMutableDictionary的基本用法
- NSDictionary、NSMutableDictionary的基本用法
- 服务器搭建时报错:HTTP 错误 404.2
- 5.x控件:CardView、RecyclerView、SwipeRefreshLayout
- linux命令集
- response的contentType 几种类型
- AFN(上传、下载)
- NSDictionary的用法
- 再谈Mysql MHA
- poj 3669 Meteor Shower
- 遍历Map的方式总结
- 更改DatePicker中年月日的间隔和分隔线颜色
- 设计模式
- 【LEETCODE】207-Course Schedule
- java操作mongodb
- xmpp版即时聊天