OC_08字典
来源:互联网 发布:西安交通大学mba 知乎 编辑:程序博客网 时间:2024/05/06 14:07
这次咱们来讲讲OC中的字典。
字典 NSDictionary /NSMutableDictionary
1.概念:字典是关键字‘key’及其定义的值(value)所构成的集合,即它是由key-value组成的键值对的集合。
‘key’一般都是‘NSString’类型的,‘value’是OC中任意对象。对于字典来讲,我们就是通过‘key’来访问‘value’。
2.为什么在有了数组之后,还需要字典?在由大量的数据或者频繁的查找的时候,使用字典效率更高。因为字典采用键查询的优化存储方式。
//初始化 //创建一个空的字典 NSDictionary *dictionary1 = [[NSDictionary alloc]init]; NSDictionary *dictionary2 = [NSDictionary dictionary]; //创建一个只有一个键值对的字典 NSDictionary *dictionary3 = [NSDictionary dictionaryWithObject:@"Jack" forKey:@"name"]; //创建一个只有多个键值对的字典 NSDictionary *dictionary4 = [NSDictionary dictionaryWithObjectsAndKeys:@"Jason",@"name",@22,@"age",@"CZ",@"address", nil];// NSLog(@"%@",dictionary4[@"name"]); //字典里面存放的元素都要是对象类型才行。如果基本数据类型,要先把基本数据类型进行封装,然后再放到这些集合中去。 NSDictionary *dictionary5 = [NSDictionary dictionaryWithDictionary:dictionary4]; NSLog(@"%@",dictionary5); //新语法创建字典 NSDictionary *dictionary6 = @{}; //新语法创建只有一个键值对的字典 NSDictionary *dictionary7 = @{@"name":@"Bob"}; //新语法创建有多个键值对的字典 NSDictionary *dictionary8 = @{@"name":@"Bob",@"age":@25,@"address":@"CZ"}; //从本地读取字典 NSDictionary *dictionary9 = [NSDictionary dictionaryWithContentsOfFile:@"files"]; //从网络读取字典 NSDictionary *dictionary10 = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""]]; //字典中键值对的数量 NSUInteger count = [dictionary4 count]; NSLog(@"%lu",count); //如何访问字典 //通过key访问字典中对应的值 NSString *name = [dictionary4 objectForKey:@"name"]; NSLog(@"%@",name); //新语法 NSString *newname = dictionary4[@"name"]; NSLog(@"姓名:%@",newname); NSLog(@"姓名:%@",dictionary4[@"name"]); //如何遍历字典中所有的key和value //表示字典中所有的key NSArray *keysArray = dictionary4.allKeys; NSLog(@"%@",keysArray); NSArray *valuesArray = dictionary4.allValues; NSLog(@"%@",valuesArray);// 使用for循环来打印 key = value [必须记住!!!] for (int i=0; i<dictionary4.count; i++) { //dictionary.count 键值对数量 NSLog(@"%@ = %@",dictionary4.allKeys[i],dictionary4.allValues[i]); // 关键字 = 值 第i个关键字=第i个值 dictionary4.allKeys[i]=dictionary.allValue[i] } //for in for (NSString *key in keysArray) { NSLog(@"%@ = %@",key,dictionary4[key]); } //使用枚举器遍历 NSEnumerator *enumerator = [keysArray objectEnumerator]; id key; while (key = [enumerator nextObject]) { NSLog(@"%@ = %@",key,dictionary4[key]); } NSLog(@"---------------------------"); NSDictionary *dictionary = @{@"name":@"Jason",@"age":@22,@"address":@"CZ",@"name":@"Barry"}; for (NSString *str in dictionary.allKeys){ NSLog(@"%@ = %@",str,dictionary[str]); }
//注意:在字典中键值对是无序的
//使用NSDicgtionary注意事项 /* 1.创建字典时,字典的键和数值都要是id(即对象)类型的; 2.创建字典时,传进的参数都是键值对,即键和对象要成对出现,最后不要忘了加一个nil; 3.在使用字典时,不要把字典当成可变字典使用; 4.字典的关键字(键)不要重复,如果重复了,后面的值就会覆盖前面的值。 ---[mDictionary5 setValue:@"Jason" forKey:@"name"]; ---[mDictionary5 setValue:@"Jack" forKey:@"name"]; */
#pragma —可变字典—
//可变字典 NSMutableDictionary
//1.初始化方式 //创建一个空的字典 NSMutableDictionary *mDictionary1 = [NSMutableDictionary dictionary]; //创建一个有一个键值对的可变字典 NSMutableDictionary *mDictionary2 = [NSMutableDictionary dictionaryWithObject:@"Jack" forKey:@"name"]; //创建一个有多个键值对的可变字典 NSMutableDictionary *mDictionary3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Jason",@"name",@22,@"age",@"CZ",@"address", nil]; //通过另一个字典创建一个字典 NSMutableDictionary *mDictionary4 = [NSMutableDictionary dictionaryWithDictionary:mDictionary3];// mDictionary4.allKeys;// mDictionary4.allValues; for (NSString *str in mDictionary3.allKeys) { NSLog(@"%@ = %@",str,mDictionary3); } //可变字典独有的初始化方法 NSMutableDictionary *mDictionary5 = [NSMutableDictionary dictionaryWithCapacity:10]; //从本地读取字典 [NSMutableDictionary dictionaryWithContentsOfFile:@""]; //从网络读取字典 [NSMutableDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""] ]; //操作字典 //增 [mDictionary5 setValue:@"Jason" forKey:@"name"]; [mDictionary5 setValue:@22 forKey:@"age"]; //改(如果原来的字典中已经有了akey这个键,那么这次新加的值就会覆盖原来关键(键)akey对应的值) [mDictionary5 setValue:@"Jack" forKey:@"name"];//Jack 覆盖了 Jason //新语法 mDictionary5 [@"name"] = @"Barry"; //删 //删除指定key的对象 [mDictionary5 removeObjectForKey:@"name"]; //删除所有对象 [mDictionary5 removeAllObjects]; NSMutableDictionary *mDic8 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Jack",@"name1",@22,@"age",@"CZ",@"address",@"Jack",@"name2",@"Jack",@"name3", nil]; NSArray *keysArray1 = mDic8.allKeys; for (NSString *key in keysArray1) { NSString *string;// NSLog(@"%@",mDic8[key]); [mDic8[key]isKindOfClass:[NSNumber class]]; //判断mDic8[key]中的值是否为NSNumber类型 if ([mDic8[key] isKindOfClass:[NSNumber class]]) { int age = [mDic8 [key] intValue]; mDic8[key] = [NSString stringWithFormat:@"%d",age]; NSLog(@"%d",age); }else{ string = mDic8[key]; } if ([string isEqualToString:@"Jack"]) {// NSLog(@"key = %@",key); } NSLog(@"key = %@",key);
字典还是比较常用的一个函数。
0 0
- OC_08字典
- iOS前期OC训练OC_08,09内存管理
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- 字典
- hrbust 1279 切蛋糕【递推】
- nmake && shapelib 编译
- BigDecimal的用法简介
- OJ------多键值合并(Map遍历)
- Camera2.0新API下获取预览图像数据 (获取TextureView中图像)
- OC_08字典
- 遗忘算法:算法概述
- 2016多校集训---hdu5794
- HDU 1171 Big Event in HDU (多重背包)
- POJ 3660 Cow Contest
- oracle 或sql server 语句遇到并非所有变量都已帮定的问题
- TX1 Caffe安装与配置--填坑指南
- JAVA 时间差距,两个时间相差多少天,时,分,秒
- android系统 Email总结文档