【黑马程序员】【Foundation框架】字典NSDictionary和NSMutableDictionary
2015-10-13 21:58
453 查看
字典 由键-值对组成的数据集合
4种创建字典方式
1>针对单个键值对 直接赋值
2>以键值对集合创建
3>直接创建并赋值
4>开发中常用
可变字典
添加元素和删除元素
遍历元素
1基本for循环遍历
2 简洁遍历
总结
4种创建字典方式
1>针对单个键值对 直接赋值
1 NSDictionary *dic = [NSDictionary dictionaryWithObject:@"dajie" forKey:@"name"];//直接创建字典 2 id object = [dic objectForKey:@"name"];// 取出name键对应值 3 NSLog(@"%@",object);
2>以键值对集合创建
1 NSArray *obj = @[@"dajie",@"ly"]; 2 NSArray *keys = @[@"name",@"address"]; 3 NSDictionary *dic1 = [NSDictionary dictionaryWithObjects:obj forKeys:keys];//创建字典 4 NSLog(@"%@",dic1);
3>直接创建并赋值
1 NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"dajie",@"name",@"ly",@"address", nil];//nil不可少 2 NSLog(@"\n---%@",dic2);
3 id obj2 = [dic2 objectForKey:@"name"];//根据键取出对应的值 4 NSLog(@"%@",obj2);
4>开发中常用
//xcode 新特性 开发中常用 15 NSDictionary *dic3 = @{@"name" : @"dajie",@"address":@"ly",@"qq":@"12324124"}; 16 NSLog(@"%@\n--%@--%ld",dic3,[dic3 objectForKey:@"name"],dic3.count);
可变字典
2 NSMutableDictionary *mdic = [NSMutableDictionary dictionary];//创建
添加元素和删除元素
//添加键值对 20 [mdic setObject:@"dajie" forKey:@"person"]; 21 [mdic setObject:@"hashiqi" forKey:@"dog"]; 22 [mdic setObject:@"shapi" forKey:@"dog"]; //主键一样字典元素前者会被后者覆盖 23 NSString *str = mdic[@"dog"]; 24 NSLog(@"%@",str); 25 //删除 26 [mdic removeAllObjects]; 27 [mdic removeObjectForKey:@"dog"]; 28 NSLog(@"%@",mdic);
遍历元素
1基本for循环遍历
30 NSDictionary *newDic = @{ 31 @"name": @"dajie", 32 @"dog":@"HASHIQI" }; 33 NSArray *key = [newDic allKeys];//取出所有的key 34 for (int i; i < newDic.count; i++) { 35 NSString *keys = key[i]; 36 NSString *value = newDic[keys]; 37 NSLog(@"%@ = %@",keys,value); 38 }
2 简洁遍历
//推荐使用 快速遍历 40 [newDic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 41 NSLog(@"%@ - %@ ",key ,obj ); 42 }];
总结
/* NSArray 相当于java List; // NSSet相当于java Set // NSdictionary相当于java Map // NSArray NSMutableArray 有序 快速访问 @[obj1,obj2,obj3]; 快速访问元素 数组名[i]; // NSSet NSMutableSet 无序 // NSDictionary NSMutableDictionary 无序 快速创建@{key1 : value1,key2 : value2}; 快速访问 字典名[key]; */
1 NSArray *persons = @[ 2 @{@"name" :@"dajie",@"phone":@"1234353", 3 @"books" : @[@"5分钟编程ios",@"5分钟编程Android"]}, 4 @{@"name" :@"xiaojie",@"phone":@"2234353"}, 5 @{@"name" :@"jinyu",@"phone":@"3234353",@"age" : @"1.2"} 6 ]; 7 // 先取出数组位置对应的字典 8 // 再根据字典name这个key找到对应的值 9 // NSLog(@"%@",persons[1][@"name"]); 10 // NSLog(@"%@",persons[0][@"books"]); 11 12 for (NSString *arrays in persons) { 13 // NSInteger *lines = [persons indexOfObject:@"name"]; 14 // NSLog(@"%ld - %@",lines,arrays); 15 NSLog(@" %@ ",arrays); 16 }
相关文章推荐
- 单链表经典面试题
- 《程序员编程艺术:面试和算法心得》链接
- 【黑马程序员】【Foundation框架】常用类NSString和NSMutableString字符串
- 百度开发测试面试经验2015
- ios面试题
- 是该决定自己以后到底要干什么了,不想干程序员,真的是要干别的了。
- iOS面试小题集锦
- java常见面试题及答案 11-20(JVM)
- 张涛:12年老程序员在小米网干了什么
- C#面试题汇总2
- 关于面试经常被问到的socket的TIME_WAIT状态的原因及解决办法和避免的办法
- 黑马程序员——泛型
- 《剑指Offer》面试题:找出数组中有3个出现一次的数字
- 堆排序
- 知名大公司面试题
- 程序员必读书籍排行榜,看看你读过的是否榜上有名
- 黑马程序员——java基础---反射
- 被问到的面试题
- 2015年,10月份校招的几个面试经验
- 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(>_<)~~~~