初识Objecive-C 之 NSDictionary

字典数据结构与操作详解
本文详细介绍了字典数据结构的基本概念、初始化方法、常用方法及遍历方式,并通过实例展示了字典增删操作与练习题解答。

1、字典的概述

字典是键值对组成的数据集合。正如我们在字典查找单词的定义一样。在字典对象中,key的值必须是唯一的。并且不为空(nil)为了表示空值,你可以用NSNull表示。

2、字典的初始化      

 //初始化字典

        NSDictionary *dic1 = [NSDictionarydictionaryWithObject:@"value1"forKey:@"key1"];

        NSDictionary *dic2 = [NSDictionarydictionaryWithObjectsAndKeys:@"value2",@"key2",@"value2-1",@"key2-1",@"value2-2",@"key2-2",@"value2-3",@"key2-3",nil];

       NSDictionary *dic3 = [NSDictionarydictionaryWithDictionary:dic1];

       NSLog(@"dic1=%@",dic1);

       NSLog(@"dic2=%@",dic2);

       NSLog(@"dic3=%@",dic3);

3、字典的常用方法

        NSDictionary *dic = [NSDictionarydictionaryWithObjectsAndKeys:@"value2",@"key2",@"value2-1",@"key2-1",@"value2-2",@"key2-2",@"value2-3",@"key2-3",nil];

        //获取字典的数量

       NSInteger count = [diccount];

       NSLog(@"count=%zi",count);

        

        //获取字典的value

       NSString *string = [dicobjectForKey:@"key2-1"];

       NSLog(@"string=%@",string);

        

        //获取字典所有的字典的key和value

       NSArray *keyArray = [dicallKeys];

       NSArray *valueArray = [dicallValues];

       NSLog(@"keyArray=%@",keyArray);

       NSLog(@"valueArray=%@",valueArray);

4、可变字典(就是可以对字典里面的对象进行add、remove等操作)

        //初始化一个可变字典

         NSMutableDictionary *mutableDic0 =[[NSMutableDictionaryalloc]initWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",

                                           @"k3",@"v4",@"k4",

                                           @"v5",@"k5",nil];

        //初始化一个空的字典

        NSMutableDictionary *mutableDic1 = [NSMutableDictionary dictionary];

        //将空字典mutableDic1内容设置成与mutableDic对象内容相同

        //注意如果不是空的字典那么在新的字典mutableDic1将会移除原有的内容

        [mutableDic1setDictionary:mutableDic0];

       NSLog(@"mutableDic1=%@",mutableDic1);

        //删除指定key  的键和值

        [mutableDic1removeObjectForKey:@"k5"];

       NSLog(@"mutableDic1=%@",mutableDic1);

        //删除一组的键和值

       NSArray *keys = [NSArrayarrayWithObjects:@"k1",@"k2",nil];

        [mutableDic1removeObjectsForKeys:keys];

       NSLog(@"mutableDic1=%@",mutableDic1);

        //删除字典所有内容

        [mutableDic1allKeys];

       NSLog(@"mutableDic1=%@",mutableDic1);

5、遍历字典

        //遍历字典

        //初始化一个可变字典

        NSMutableDictionary *mutableDic0 =[[NSMutableDictionaryalloc]initWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",

                                          @"k3",@"v4",@"k4",

                                          @"v5",@"k5",nil];

        

       //使用枚举类型

       NSEnumerator *enumerator = [mutableDic0keyEnumerator];//返回一个key的枚举对象

       id key;

        //nextObject 访问下一个key

        //当key为空的时候就跳出循环

       while (key=[enumeratornextObject]) {

           id obj3 = [mutableDic0objectForKey:key];

           NSLog(@"obj3=%@",obj3);

        }

        //快速枚举遍历

       for (id keyin mutableDic0) {

           NSString *obj1 = [mutableDic0objectForKey:key];

           NSLog(@"obj1=%@",obj1);

        }

        

        //使用枚举器遍历

       for (int index=0; index<[mutableDic0count]; index++) {

           NSString *obj = [mutableDic0objectForKey:[[mutableDic0 allKeys] objectAtIndex:index]];

           NSLog(@"obj=%@",obj);

        }

6、字典练习

    /*

     1、定义一个可变字典

     2、利用forin输出字典中的键值

     3、对字典增删操作并输出

     */

    

    NSMutableDictionary *mDic1 = [NSMutableDictionarydictionaryWithObjectsAndKeys:@"元芳",@"狄仁杰",@"展昭",@"包拯",@"毛利",@"柯南",nil];

   NSArray *keys = [mDic1allKeys];

   for (NSString *keyin keys) {

       NSString *val = [mDic1valueForKey:key];

       NSLog(@"%@:%@,你怎么看",key,val);

    }

//    NSMutableDictionary *mDic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"小胖",@"大胖", @"萝卜",@"大坑",nil];

//    [mDic1 addEntriesFromDictionary:mDic2];

    [mDic1setObject:@"小胖"forKey:@"大胖"];

    [mDic1setObject:@"萝卜"forKey:@""];

    NSLog(@"______________________");

    keys = [mDic1allKeys];

   for (NSString *keyin keys) {

       NSString *val = [mDic1valueForKey:key];

       NSLog(@"%@:%@,这事你怎么看",key,val);

    }

    NSLog(@"++++++++++++++++++++");

    [mDic1 removeObjectForKey:@""];

    keys = [mDic1allKeys];

   for (NSString *keyin keys) {

       NSString *val = [mDic1valueForKey:key];

       NSLog(@"%@:%@,这事你怎么看",key,val);

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值