NSDictionary和NSMutableDictionary介绍

一、NSDictionary的介绍:

  • NSDictionary翻译过来叫做”字典”
  • 日常生活中, “字典”的作用:通过一个拼音或者汉字,就能找到对应的详细解释
  • 类似通过一个key,就能找到对应的value。
  • NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改

二、NSDictionary的初始化:

//简便写法,最常用
NSArray *arr = @[@"语文",@"数学"]
NSDictionary *dict = @{
                        @"name":@"小明",
                        @"age":@"13",
                       //value是OC的对象即可
                        @"student":arr
                       };
NSLog(@"dict - name - %@",[dict objectForKey:@"name"]);
        /**
         *  2.keys and values-dictionaryWithObjectsAndKeys
            先写vlaue,再写key
            一对一对写
            别忘了nil
         */
NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"小明",@"name",@"13",@"age",nil];
NSLog(@"dict2 - name - %@",[dict2 objectForKey:@"name"]);  
        /**
         *  3.dictionaryWithObjects - forKeys
         */
NSDictionary *dict3 = [NSDictionary dictionaryWithObjects:@[@"小明",@"13"]forKeys:@[@"name",@"age"]];
NSLog(@"dict3 - name - %@",[dict3 objectForKey:@"name"]);

三、NSDictionary的常见使用:

NSArray *book = @[@"语文",@"数学",@"英语"];
NSDictionary *dict = @{
                       @"name":@"小明",
                       @"age":@"13",
                       @"sex":@"男",
                       @"subject":book
                      };  
//dict[@"name"] - 根据key值获取value
NSLog(@"dict - name - %@", dict[@"name"]);        
//等同于
[dict objectForKey:@"name"];

//返回字典中有多少对key和value
NSLog(@"dict - name - %lu", (unsigned long)dict.count);

//获取所有的key 等同于dict.allKeys
[dict allKeys];

//获取所有的value 等同于 dict.allValues
[dict allValues];

//NSDictionary的遍历
for (NSString *key in dict.allKeys) {
    NSLog(@"%@ : %@",key,[dict objectForKey:key]);
    }

四、NSMutableDictionary的介绍及使用:

  • NSMutableDictionary是NSDictionary的子类
  • NSDictionary是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素
  • NSMutableDictionary是可变的,随时可以往里面添加\更改\删除元素.
       /**
         *  1.NSdictary可以用的初始化发放,NSMutableDictionary都可以用
            建立空字典方法
         */
        NSMutableDictionary *dict = [NSMutableDictionary dictionary];
        
        //2.通过另一个字典创建一个NSMutableDictionary - dictionaryWithDictionary
        
        NSDictionary *dict2 = @{
                               @"name":@"小明",
                               @"age":@"13"
                               };
        NSMutableDictionary *dict3 = [NSMutableDictionary dictionaryWithDictionary:dict2];
        //dict3等价dict4
        NSMutableDictionary *dict4 = [dict2 mutableCopy];
        
        //增 - 前面是value后面是key
        [dict3 setObject:@"男" forKey:@"sex"];
        //等价
        //如果这个key已经存在,修改它的值
        //如果不存在就是增加一个key-value
        dict3[@"sex"] = @"男";
        
        //通过aKey删除对应的value
        [dict3 removeObjectForKey:@"sex"];
        //删除所有的键值对
        [dict3 removeAllObjects];
        
        //改
        [dict3 setObject:@"男" forKey:@"sex"];
        dict3[@"sex"] = @"男";
        
        //查找key对应的value
        dict3[@"sex"];

 

转载于:https://my.oschina.net/thewrold/blog/749225

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值