OC中的不可变字典

            字典  NSDictionary

         1.字典是关键字‘key’及定义的值‘value’所构成的集合,既它是由key-value组成的键值对的集合。通常来讲,‘key‘一般是’NSString‘类型的,’value‘’OC’中的任意对象。对于字典来说,我们就是通过‘key’来访问

         2.为什么在有了数组以后还需要字典呢?因为在由大量的数据或者频繁查找信息,使用字典效率更高,因为字典是采用键查询的优化存储方法的。

         3.在我们OC中我们使用NSDictionary NSMutableDictionary l来表示字典。其中NSMutableDictionaryNSDictionary的子类

         

        

        初始化

        1.创建一个空的字典

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

        NSDictionary *dictionary2 = [NSDictionary dictionary];

        

        2.创建一个键值对的字典

        NSDictionary *dictionary3 = [NSDictionary dictionaryWithObject:@"Rick" forKey:@"name"];

        

        3.创建多个键值对的字典

        NSDictionary *dictionary4 = [NSDictionary dictionaryWithObjectsAndKeys:@"Rick",@"name",@25,@"age",@"GZ",@"address", nil];

        注意:字典里面存放的元素都要是对象类型才行,如果是基本数据类型,要先把基本数据类型进行封装,然后再放到集合里面,value在前,key在后,value key要成双出现

        NSLog(@"dictionary4 = %@",dictionary4);//注意:在字典中键值是无序的

        

        4.根据一个字典创建一个字典

        NSDictionary *dictionary5 = [NSDictionary dictionaryWithDictionary:dictionary4];

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

        

        5.新语法创建字典

        NSDictionary *dictionary6 = @{};

        6.新语法创建一个键值对

        NSDictionary *dictionary7 =@{@"name":@"Rick"};

        7.新语法创建多个键值对

        NSDictionary *dictionary8 =@{@"name":@"Rick",@"age":@"25",@"address":@"GZ"};

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

        

        8.从本地读取字典

        NSDictionary *dictionary9 = [NSDictionary dictionaryWithContentsOfFile:@""];

        

        9.从网络读取字典

        NSDictionary *dicctionary10 = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""]];

        

        10.字典中键值对的数量

        NSUInteger count = dictionary4.count;

        NSLog(@"%lu",count);

        

        如何访问字典

        1.通过key访问字典中对应的值

        NSString *name = [dictionary4 objectForKey:@"name"];

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

        2.新语法

        NSString *newName = dictionary4[@"name"];

        

        3.遍历字典中所有的值

        (1).表示字典中所有的key

        NSArray *keysArray = dictionary4.allKeys;

        NSLog(@"%@",keysArray);

        

        (2).字典中所有的value

        NSArray *valueArray = dictionary4.allValues;

        NSLog(@"%@",valueArray);

        

        4.使用for循环来打印

        

        for (int i = 0; i<count; i++) {

            NSLog(@"%@ = %@",keysArray[i],valueArray[i]);

            //NSLog(@"%@ = %@",keysArray[i],[dictionary4 objectForKey:keysArray[i]]);

            //NSLog(@"%@ = %@",keysArray[i],dictionary4[keysArray[i]]);

        }

        

        5.使用快速枚举

        for (NSString *key in keysArray) {

            //NSLog(@"%@ = %@",key,[dictionary4 objectForKey:key]);

            NSLog(@"%@ = %@",key,dictionary4[key]);

        }

        6.使用枚举器遍历

        NSEnumerator *enumerator = [keysArray objectEnumerator];

        NSString *key;

        while (key=[enumerator nextObject]) {

            NSLog(@"%@ = %@",key,dictionary4[key]);

        }

        注意:在不可变字典中不能存储相同的key,如果相同的key,则只会打印一个key对应的value

        NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Rick",@"name",@25,@"age",@"GZ",@"address",@"Jack",@"name", nil];

                                    

        NSLog(@"=---------------------------");

        for (NSString *key in keysArray) {

            NSLog(@"%@ = %@",key,dictionary[key]);

        }

            

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值