Foundation——NSDictionary(字典)

     在编程中,字典就是关键字及其定义的集合,cocoa中有一个实现这种功能的集体类.NSDictionary。

    NSDictionary。在给定的关键字(通常是一个NSString 字符串)下存储一个数值(可以是任意类型的对象)。然后就可以用这个关键字来查找相应的数值。

      字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。对于频繁的查询和大型的数据集来说。使用字典比数组要快得多。

NSDictionary就像NSString和NSArray一样是不可变的对象。但是NSMutableDictionary类允许添加和删除字典元素。在创建新的NSDictionary时,就要提供该字典所存储的全部对象和关键字。开始学习使用字典最简单的方法就是用类方法dictionaryWithObjectsAndKeys:

不能在NSDictionary中存储nil值。

创建不可变的字典

 //97是值,johnson是关键字。

NSDictionary *glossary=[NSDictionarydictionaryWithObjectsAndKeys:[NSNumbernumberWithInteger:97],@"nicky",[NSNumbernumberWithInteger:95],@"johnson",[NSNumbernumberWithInteger:90],@"black",[NSNumbernumberWithInteger:100],@"lily",nil];

       NSLog(@"%@",glossary);

objectForKey:来获取字典中的值也就是查找对象:通过键查值。 不能值去查关键字。

 

        //objectForkey 参数是关键字,返回的是值

        NSLog(@"%@",[glossary objectForKey:@"johnson"]);


可变字典

可变字典 字典是不能插入的

          给字典添加元素:setObject:forkey;

         删除指定的元素:removeObjectForkey;

         */

        NSMutableDictionary *mGlossary=[NSMutableDictionary dictionary];//这个没有预估字典的个数。

        

        [mGlossary setObject:[NSNumbernumberWithInteger:97]forKey:@"nicky"];

        [mGlossary setObject:[NSNumbernumberWithInteger:95]forKey:@"johnson"];

        [mGlossary setObject:[NSNumbernumberWithInteger:90]forKey:@"black"];

        [mGlossary setObject:[NSNumbernumberWithInteger:100]forKey:@"lily"];

        NSLog(@"%@",mGlossary);



        [mGlossaryremoveObjectForKey:@"johnson"];//删除指定的对象。                                       NSLog(@"%@",mGlossary);



NSMutableDictionary *my=[NSMutableDictionarydictionaryWithCapacity:20];//预估字典的个数。


 字典的枚举器:


        //遍历字典中的所有对象。 取的是值。

       // objectEnumerator 取字典里的对象 也就是值。

       // 遍历字典中的对象用objectEnumerator ,遍历字典中的关键字用keyEnumerator

        NSEnumerator *enumerator;

        enumerator=[mGlossaryobjectEnumerator];

        id obj;

        while (obj=[enumerator nextObject])

        {

            NSLog(@"I found %@",obj);

        }



遍历字典中的关键字。

        

        

        NSEnumerator *enumerator1;

        enumerator1=[mGlossarykeyEnumerator];

        id obj1;

        while (obj1=[enumerator1 nextObject])

        {

            NSLog(@"I found %@",obj1);

        }



快速枚举;只能遍历关键字,不能遍历值。

      

        

        for (id obj2 in mGlossary)

        {

            NSLog(@"I found %@",obj2);

        }





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值