OC语言-字典与可变字典的定义及字典的嵌套

下面都是我学习OC语言中字典和可变字典的学习总结,希望能给同学者一点帮助,也希望同学者帮忙指正错误之处。


一、字典的定义

不可变字典

1.NSDictionary(不可变字典), NSMutableDictionary(可变字典)是由键-值对组成的数据集合。

2.通过key(键),查找对应value(值)。key通常是字符串对象,值可以是其他任意类型对象。在一个对象中,key的值必须是唯一的。

注意:字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示一个空值,可以使用NSNull对象。

3.数据字典与数组的特征

1)数组:数组是按一定顺序去排列的集合,通过下标去存值。

      当希望数据是按照一定的顺序去排列的时候,应该选择使用数组。

2)数据字典:通过key存取值。

       获取一个具体的标识,准确得到需要的值。

4.数据字典的使用规则

        数据字典是通过key来存取值,key value是成对出现的。

5.字典初始化方法

1)初始化一个空字典方法一

      NSDictionary *dic = [[NSDictionary alloc] init];

2)初始化一个空字典方法二

       NSDictionary *dic1 = [NSDictionary dictionary];

3)初始化的同时 添加一对键值  方法三

        NSDictionary *dic2 = [NSDictionary dictionaryWithObject:@"value" forKey:@“key"];

4)初始化的同时 添加多对键值  方法四

注意:前面是值 可以任意类型,后面是key 必须是字符串。

 NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"value", @"key", @"value1", @“key1",nil];

5)字典的新写法

注意:前面是key,后面是值。

NSDictionary *dic4 = @{@"key1":@"value1", @“key2":@"value2"};

6.字典取值

1)方法一:objectForKey:通过key取字典里面的值

        NSString *string = [dic5 objectForKey:@"key1"];

        NSLog(@"%@", string);

2)方法二:取字典值 字典名[@“key"]

        NSString *string1 = dic5[@"key1"];

        NSLog(@"%@", string1);

7.快速遍历字典

1)allKeys 是所有key的一个数组。count得到数组内 有多少个元素。

     字典名.allKeys是指所有key的数组。

2) 快速遍历key

       for (NSString *key in 字典名.allKeys ) {

           NSLog(@"%@", key);

        }

二、可变字典的定义

可变字典

1.  可变字典:可以删除、添加(替换)。

2.可变字典的类名: NSMutableDictionary。是字典NSDictionary的一个子类。

3.可变字典的初始化

NSMutableDictionary *可变字典对象名 = [NSMutableDictionary dictionary];

注意:不可以使用这种方式初始化@{@"key":@"value"}

  4.通过key设置字典里面的值

      [可变字典对象名 setObject:@"值" forKey:@"key"];

        

5. 通过key移除key对应的key和值

        

        [可变字典对象名 removeObjectForKey:@"key"];

        NSLog(@"%@", 可变字典对象名);

三、字典的嵌套练习

1. 解析下面的字典

{

            "code": 200;

            “data” :

                    {

                   “id”:”110119”;

                   "nick" : "小花";

                   "header" : @"www.baidu.headerImage.png";

                   “balance”:”100”;

            }

        }

2.解析语句

 1)首先初始化一个可变字典对象名

NSMutableDictionary *dic = [NSMutableDictionary dictionary];

2)对最外层嵌套字典设值

 [dic setObject:@(200) forKey:@"code"];

 3)对内层嵌套字典设值

 NSDictionary *dataDic = @{@"data":@{@"id":@"110119", @"nick":@"name", @"header":@"www.baidu.headerImage.png", @"balance":@(100)}};

  4)将内层嵌套数据设值到外层嵌套      

        [dic setObject:dataDic forKey:@"data"];

   5)输出该字典嵌套     

        NSLog(@"%@", dic);

3.更改内层嵌套的内容

   1)修改头像。我们更改头像,首先要将data变成可变字典。

   NSMutableDictionary *dic1 =[dic1[@"data"] mutableCopy];//mutableCopy拷贝mutable的值

    2)对头像重新设值

     [dic2 setObject:@"www.taobao.image.png" forKey:@"header"];

     3)打印修改头像情况

          NSLog(@"%@", dic2);

3.判断通过输入code值是否登录成功

     1)200:成功 输出data字典里面的所有内容

     2) 300:失败,客户端直接弹出msg提示语

     3)310:登录票据失败(客户端需重新登录)

实现代码如下:

       //获得key值

       NSInteger code = [dic1[@"code"] integerValue];

        NSLog(@"尊敬的客户请输入您的code值");

        scanf("%ld", &code);

       //定义一个用户信息字典对象,以便查看用户信息

        NSDictionary *userInfo = dataDic[@"data"];

      //通过switch语句来判断信息 

        switch (code) {

                case 200:

                NSLog(@"恭喜您登入成功");

                NSLog(@"用户昵称:%@", userInfo[@"nick" ]);

                break;

                case 300:

                 NSLog(@"对不起,登录名或密码错误,请重新输入!");

                  break;

                  case 310:

                   NSLog(@"对不起,登录数据失效,请重新登录!");

                   break; 

                    default:

                    NSLog(@"返回数据失败!请重新输入!");

                     break;  }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值