NSDictionary及NSMutableDictionary

/*
    NSDictionary
    作用:通过key值,访问value值
    注意:key值和value值都是对象
    键值对集合的特点:
       1.key值重复的只能保存一个,并且是第一个。而NSMutableDictionary则是保存最后一个
       2.根据key值找value值
       3.键值对中存储的数据是无效的
    NSMutableDictionary
       NSDictionary创建的字典是不可变的,也就是不能惊醒增删修改,而NSMutableDictionary可以,而且他继承自NSDictionary
 */
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
    //NSDictionary
        //创建空字典
        NSDictionary *dict1 = [NSDictionary dictionary];
        NSLog(@"dict1 = %@",dict1);
        //创建只有一对键值对的字典
        NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"liuda" forKey:@"1"];
        NSLog(@"dict2 = %@",dict2);
        //创建有多个键值对的字典,如果出现相同的key值,那么第一个被保存,后面相同key值的不被保存
        NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"suner",@"2",@"zhangsan",@"3",@"lisi",@"4", nil];
        NSLog(@"dict3 = %@",dict3);
        //快速创建字典{。。key值:value值,。。。}
        NSDictionary *dict4 = @{@"key1":@"value1",@"key2":@"value2"};
        NSLog(@"dict4 = %@",dict4);
    //NSDictionary的操作
        //获取当前字典有多少对键值
        NSLog(@"%lu",dict4.count);
        //根据键值获取value值
        NSString *str = [dict4 objectForKey:@"key2"];
        NSLog(@"%@",str);
        //遍历字典(第一步:获取所有的key值,第二步:根据key值,获取value值)
        //第一种方法
        NSLog(@"dict3 = %@",dict3);
        for(NSString *key in dict3){
            NSLog(@"%@ = %@",key,[dict3 objectForKey:key]);
        }
        //第二种方法(block)
        [dict3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
            NSLog(@"%@ = %@",key,obj);
        }];
        NSLog(@"Hello, World!");
    //NSMutableDictionary
        //创建空字典
        NSMutableDictionary *ndic1 = [NSMutableDictionary dictionary];
        NSLog(@"ndic1 = %@",ndic1);
        //创建只含有一个键值对的字典
        NSMutableDictionary *ndic2 = [NSMutableDictionary dictionaryWithObject:@"value1" forKey:@"key1"];
        NSLog(@"ndic2 = %@",ndic2);
        //创建有多个键值对的字典,如果出现相同的key值,那么第一个被保存,后面相同key值的不被保存
        NSMutableDictionary *ndic3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value2",@"key2",@"value3",@"key3",@"value4",@"key4", nil];
        NSLog(@"ndic3 = %@",ndic3);
        //快速创建
        NSMutableDictionary *ndic4 = @{@"key5":@"value5",@"key6":@"value6",@"key7":@"value7"};
        NSLog(@"ndic4 = %@",ndic4);
    //NSMutableDictionary的操作
        //添加
        [ndic1 setObject:@"zhuhoulin1" forKey:@"1"];
        [ndic1 setObject:@"zhuhoulin2" forKey:@"2"];
        [ndic1 setObject:@"zhuhoulin3" forKey:@"3"];
        [ndic1 setObject:@"zhuhoulin4" forKey:@"1"];//setObject不仅仅是添加的作用,他也有修改的作用
        NSLog(@"ndic1 = %@",ndic1);
        //删除
          //根据key值删除键值对
        [ndic1 removeObjectForKey:@"1"];
        NSLog(@"ndic1 = %@",ndic1);
          //删除所有键值对
        [ndic1 removeAllObjects];
        NSLog(@"ndic1 = %@",ndic1);
        //修改,同添加使用相同的方法
        [ndic1 setObject:@"wunw" forKey:@"3"];
        NSLog(@"ndic1 = %@",ndic1);
          //简写方法
         ndic1[@"2"] = @"wwwww";
        NSLog(@"ndic1 = %@",ndic1);
        //查找
        NSArray *arr = [ndic1 allKeys];
        BOOL Is = [arr containsObject:@"5"];//查看是否包含该key值的元素
        NSLog(@"%d",Is);
        //遍历字典(第一步:获取所有key值,第二步根据key值获取value值)

        NSLog(@"ndic3 = %@",ndic3);
        for(NSString *str in ndic3){
            NSLog(@"%@ = %@",str,[ndic3 objectForKey:str]);//发现打印的时候乱序,尽量键值中不要出现key+数字(key10,key9==)
        }
        [ndic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
            NSLog(@"%@ = %@",key,obj);
        }];

    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值