首页 > 其他分享 >Objective-C语法之NSDictionary和NSMutableDictionary

Objective-C语法之NSDictionary和NSMutableDictionary

时间:2022-11-14 21:31:44浏览次数:47  
标签:07 16 09 NSDictionary NSMutableDictionary 403 key Objective objectiveC


Java有Map,可以把数据以键值对的形式储存起来,取值的时候通过key就可以直接拿到对应的值,方便快捷。在Objective-C语言中,词典就是做这样的事情的,和NSArray一样,一个词典对象也能保存不同类型的值,词典也分别有不可变词典和可变的词典(NSDictionary与NSMutableDictionary),前者是线程安全的,后者不是 。

Objective-C语法之NSDictionary和NSMutableDictionary_键值对

1、不可变词典NSDictionary的主要用法:

[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对直接创建词典对象,结尾必需使用nil标志结束。

[dictionary count]: 得到词典的键值对数量。
[dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中,类似于Java语言中的迭代器
[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中
[dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值。

代码示例:

 



[cpp]  ​​view plain​​ ​​copy​​



  1. int main(int argc, const char * argv[])  
  2. {  
  3.     @autoreleasepool {  
  4. "25",@"age",@"张三",@"name",@"男",@"性别",nil];  
  5. "%lu", [dictionary count]);  
  6.         NSEnumerator *enumeratorKey = [dictionary keyEnumerator];  
  7. for (NSObject *object in enumeratorKey) {  
  8. "key:%@", object);  
  9.         }  
  10.           
  11.         NSEnumerator *enumeratorObject = [dictionary objectEnumerator];  
  12. for (NSObject *object in enumeratorObject) {  
  13. "value:%@", object);  
  14.         }  
  15. "key name的值是:%@", [dictionary objectForKey:@"name"]);  
  16.           
  17.     }  
  18. return 0;  
  19. }  



打印结果;



2012-07-09 16:31:18.276 objectiveC[2965:403] 3
2012-07-09 16:31:18.282 objectiveC[2965:403] key:age
2012-07-09 16:31:18.282 objectiveC[2965:403] key:name
2012-07-09 16:31:18.283 objectiveC[2965:403] key:性别
2012-07-09 16:31:18.283 objectiveC[2965:403] value:25
2012-07-09 16:31:18.284 objectiveC[2965:403] value:张三
2012-07-09 16:31:18.284 objectiveC[2965:403] value:男
2012-07-09 16:31:18.285 objectiveC[2965:403] key name的值是:张三



2、可变的词典NSMutableDictionary。

NSMutableDictionary是NSDictionary的子类,所以继承了NSDictionary的方法, 以上的代码对NSMutableDictionary来说完全可用。我们试试不一样的地方

增删键值数据。

[dictionary setObject: forKey:] :向可变的词典动态的添加数据 
[dictionary removeAllObjects..] : 删除掉词典中的所有数据。
[dictionary removeObjectForKey..] :删除掉词典中指定key的数据

代码示例:

 



[cpp]  ​​view plain​​ ​​copy​​



  1. int main(int argc, const char * argv[])  
  2. {  
  3.     @autoreleasepool {  
  4. "25",@"age",@"张三",@"name",@"男",@"性别",nil];  
  5. "30名" forKey:@"名次"];  
  6.           
  7. "%lu", [dictionary count]);  
  8.         NSEnumerator *enumeratorKey = [dictionary keyEnumerator];  
  9. for (NSObject *object in enumeratorKey) {  
  10. "key:%@", object);  
  11.         }  
  12.           
  13.         NSEnumerator *enumeratorObject = [dictionary objectEnumerator];  
  14. for (NSObject *object in enumeratorObject) {  
  15. "value:%@", object);  
  16.         }  
  17. "key 名次的值是:%@", [dictionary objectForKey:@"名次"]);  
  18. "名词"];  
  19. "%lu", [dictionary count]);  
  20.     }  
  21. return 0;  
  22. }  



 

打印结果:

 

2012-07-09 16:37:07.037 objectiveC[3053:403] 4
2012-07-09 16:37:07.042 objectiveC[3053:403] key:age
2012-07-09 16:37:07.043 objectiveC[3053:403] key:性别
2012-07-09 16:37:07.043 objectiveC[3053:403] key:name
2012-07-09 16:37:07.044 objectiveC[3053:403] key:名次
2012-07-09 16:37:07.044 objectiveC[3053:403] value:25
2012-07-09 16:37:07.045 objectiveC[3053:403] value:男
2012-07-09 16:37:07.045 objectiveC[3053:403] value:张三
2012-07-09 16:37:07.046 objectiveC[3053:403] value:30名
2012-07-09 16:37:07.046 objectiveC[3053:403] key 名次的值是:30名

 


标签:07,16,09,NSDictionary,NSMutableDictionary,403,key,Objective,objectiveC
From: https://blog.51cto.com/u_3457306/5850797

相关文章

  • Objective-C语法之NSSet和NSMutableSet
    NSSet和NSMutableSet是无序的,但是它保证数据的唯一性。当插入相同的数据时,不会有任何效果。从内部实现来说是hash表,所以可以常数时间内查找一个数据。 1、NSSet的使用[NS......
  • Objective C编程基础视频课程-关东升-专题视频课程
    ObjectiveC编程基础视频课程—8104人已学习课程介绍        本课程包括ObjectiveC数据表达式,数据类型,运算符,控制语句,面向对象开发语言特性,ObjectiveC的继承性和......
  • Qt on Mac 开发之 Qt程序加入Objective-C代码(包含如何查找Objective-C的库)
    目录​​1、引入OC文件​​​​2、引入OC库​​​​3、引入Plist文件​​​​4、编译程序​​1、引入OC文件在pro(或pri)中加入Objective-C的头文件和源文件例如:HEADERS+=$$......
  • MaHengbo-2022-MultiObjectiveDiverseHumanPredictionWithKnewledgeDistillation
    Multi-ObjectiveDiverseHumanMotionPredictionWithKnowledgeDistillation#paper1.paper-info1.1MetadataAuthor::[[HengboMa]],[[JiachenLi]],[[Ramti......
  • windows下关于Objective-C开发环境的配置
    最近IOS一直很火,也想学习以以下OC开发,一般装个虚拟机,然后装个mac,我相信大多数人的机子跑不起来或者很卡,所以之前借鉴了一个文章,就是关于在windows下配置OC开发环境,这里我把......
  • NSDictionary类使用(转)
    字典:NSDictionary 字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后......
  • Objective-c
    标注10天的课程,打算2天看完,改成3天看完,最后4天看完了,Objective-c基于c,加了面向对象的思想和自己的一些奇怪的语法,万变不离其宗。感觉最大的收获是学了很多内存管理的知识。......
  • Objective-C的IDE开发集成环境
    AppCodeforMac是适用于Mac操作系统的全新智能Objective-C的IDE开发集成环境,帮助开发者来开发Mac、iphone和iPad等iOS系统的相关应用程序,是从事iOS开发工作者必不可少的工......