博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSDictionary 字典类
阅读量:2353 次
发布时间:2019-05-10

本文共 2395 字,大约阅读时间需要 7 分钟。

 字典是以键值对的形式存储数据的   key value  .    字典和数组都可以相互存储

1:创建字典,不可变的

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"zhong",@"name",nil];

NSLog(@"dic %@",dic);  //   dic{  name= zhong;}

2:快捷创建方式

NSDictionary *dic2 = @{@"name":@"zhong",@"year":@"22"};

NSLog(@"dic2 %@",dic2);  //   dic2{  name= zhong;year=22;}

3:字典中可以存储任意数据类型,输出的顺序不是自然顺序

NSArray *array = @[@"one",@"two"];

NSDictionary *dic3 = @{

                                       @"one":@"1",

                                       @"num":[NSNumber numberWithInt:10],

                                       @"dic":dic

                                       @"ar1":array

                                       };

NSLog(@"dic3  %@",dic3);  //  dic3{   dic = {  name= zhong;};   ar1=(one,two);  num=10;one=1;  }

4:获得字典的长度,指的是存储的key的个数,即对象个数

NSLog(@"count %d",[dic3 count]);  //NSLog(@"count %d",dic3.count);

5:从字典中取值

NSString *str = [dic3 objectForKey:@"one"];   //  1

NSDictionary *dicTmp = [dic3 objectForKey:@"dic"];   //  {name=zhong;}

NSArray *arrayTmp = [dic3 objectForKey:@"ar1"];      //  (one,two)

6遍历字典

//取出所有的key值

NSArray  *allkeys = [dic3 allkeys];   //(one,num,dic,ar1)

 for(int i = 0;i<allkeys.count;i++)

{

    NSString *key  = [ allkeys objectAtIndex:i];

   //如果字典中存储了多种不同的类型,那么最好用id类型去接收它

   id  obj  = [dic3 objectWithKey:key];

   NSLog(@"obj %@",obj);  // obj 1   obj  10   obj  {name=zhong;}   obj (one,two)

}

 7:枚举器遍历

NSEnumerator *enumerator  = [dic3 objectEnumerator];

id value;

while(value = [enumerator nextObject])

{     NSLog(@"value  %@",value);   // value 1   value  10   value  {name=zhong;}   value (one,two)

}

8:可变字典

 //创建一个可变长度字典

NSMutableDictionary *muDic = [[NDMutableDictionary  alloc]initWithCapacity:0];

//向字典中存储数据 

[muDic  setObject:@"1"   forKey:@"one"];

[muDic  setObject:@"2"   forKey:@"two"];

[muDic  setObject:@"3"   forKey:@"three"];

//删除

[muDic  removeObjectForKey:@"key"];

//全部删除

[muDic  removeAllObjects];

//向字典中存储对象

和前面创建Person对象一样,就不多说了,直接应用

Person *p1 = [[Person alloc] initWithName:@"zhong" andAge:@"22"];

Person *p2 = [[Person alloc] initWithName:@"tang" andAge:@"20"];

Person *p3 = [[Person alloc] initWithName:@"lili" andAge:@"30"];

[muDic setObject:p1 forKey:@"d1"];

[muDic setObject:p2 forKey:@"d2"];

[muDic setObject:p3 forKey:@"d3"];

//在向字典中存储数据的时候,一定要保证key值是唯一的

//[muDic setObject:p3 forKey:@"d3"];

//[muDic setObject:p3 forKey:@"d3"];

//[muDic setObject:p3 forKey:@"d3"];

//使用for 循环遍历可变数组

NSArray *allkeys = [muDic allKeys];

for(int i = 0;i<allkeys.count;i++)

{

    Person *p = [muDic objectForKey:[allkeys objectAtIndex:i];

};

//使用枚举器遍历可变数组

NSEnumerator *enumerator = [muDic objectEnumerator];

 Person *tmp;

while(tmp = [enumerator nextObject])

{

   NSLog(@"  tmp  %@",tmp);

}

转载地址:http://qxrvb.baihongyu.com/

你可能感兴趣的文章
理解Fragment生命周期
查看>>
最靠谱的禁止ViewPager滑动方法
查看>>
android错误之android.content.res.Resources$NotFoundException:
查看>>
Android监听软键盘打开收起事件(软键盘自带收起按钮)
查看>>
huffman code and encode
查看>>
exception in c++
查看>>
java并发编程lock
查看>>
阿里云技术教程系列-ECS远程连接 Linux 实例
查看>>
Linux新建用户并允许docker
查看>>
Drools Workbench 7.5.0.Final安装运行
查看>>
Docker快速部署Redis
查看>>
Spring boot shiro session cache ecache redis 共存配置
查看>>
一看就懂的设计模式--设计模式分类
查看>>
一看就懂的设计模式--模板方法
查看>>
一看就懂的设计模式--享元模式
查看>>
一看就懂的设计模式--策略模式
查看>>
spring Cloud 组建图
查看>>
腾讯云
查看>>
什么服务器比较好?
查看>>
阿里云+腾讯云采购季优惠攻略
查看>>