Java有Map,可以把数据以键值对的形式储存起来,取值的时候通过key就可以直接拿到对应的值,方便快捷。在Objective-C语言中,词典就是做这样的事情的,和NSArray一样,一个词典对象也能保存不同类型的值,词典也分别有不可变词典和可变的词典(NSDictionary与NSMutableDictionary),前者是线程安全的,后者不是 。
1、不可变词典NSDictionary的主要用法:
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对直接创建词典对象,结尾必需使用nil标志结束。
[dictionary count]: 得到词典的键值对数量。
[dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中,类似于Java语言中的迭代器
[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中
[dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值。
代码示例:
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"25",@"age",@"张三",@"name",@"男",@"性别",nil];
- NSLog(@"%lu", [dictionary count]);
- NSEnumerator *enumeratorKey = [dictionary keyEnumerator];
- for (NSObject *object in enumeratorKey) {
- NSLog(@"key:%@", object);
- }
- NSEnumerator *enumeratorObject = [dictionary objectEnumerator];
- for (NSObject *object in enumeratorObject) {
- NSLog(@"value:%@", object);
- }
- NSLog(@"key name的值是:%@", [dictionary objectForKey:@"name"]);
- }
- return 0;
- }
打印结果;
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的数据
代码示例:
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"25",@"age",@"张三",@"name",@"男",@"性别",nil];
- [dictionary setObject:@"30名" forKey:@"名次"];
- NSLog(@"%lu", [dictionary count]);
- NSEnumerator *enumeratorKey = [dictionary keyEnumerator];
- for (NSObject *object in enumeratorKey) {
- NSLog(@"key:%@", object);
- }
- NSEnumerator *enumeratorObject = [dictionary objectEnumerator];
- for (NSObject *object in enumeratorObject) {
- NSLog(@"value:%@", object);
- }
- NSLog(@"key 名次的值是:%@", [dictionary objectForKey:@"名次"]);
- [dictionary removeObjectForKey:@"名词"];
- NSLog(@"%lu", [dictionary count]);
- }
- return 0;
- }
打印结果:
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名
著作权声明:本文由http://blog.csdn.net/totogo2010/原创
相关推荐
Objective-C-如何创建和使用NSDictionary和NSMutableDictionary-Latest-2017-Hindi- 视频:-Yogesh Patel在Objective-C中使用NSDictionary和NSMutableDictionary的介绍。 在本频道中,我将在多部视频中讲授大多数...
《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...
支持新的Objective-C语法,如字面NSDictionary、字面NSArray、字面NSNumber,字面NSDictionary的语法与Objective-C不同,考虑lua语法; 支持枚举集合的语法(for-in 语法); 添加一些扩展,例如@array、@...
详情请参见我的博文: http://blog.csdn.net/yang3wei/article/details/7804171
GenericModel 支持Objective-C Model、NSDictionary、JSON之间互相转换,框架非常简单高效,内部对反射过的model设置有缓存,用Objective-C中的Protocol限定NSArray,NSDictionary等容器类的类型,防止容器类型变量...
是关于iOS开发语言部分Objective-C中字典对象NSDictionary的方法使用总结
1.字典使用Key-Value的形式储存数据,是关键字... Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { if (...
主要介绍了Objective-C中NSNumber与NSDictionary的用法简介,虽然Objective-C即将不再是iOS的主流开发语言...well,需要的朋友可以参考下
NSDictionary NSMutableDictionary 增强 Import pod 'NSDictionary-Enhance', '~> 1.0.0' Usage #import "NSDictionary+VDEnhance.h" [NSDictionary vd_dictionaryWithDictionary:originDic mergeWithDictionary:dic...
FFSafeKit安全地使用NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSMutableString。 功能安全访问NSArray安全访问NSDictionary安全访问并执行更改FFSafeKit安全地使用NSArray,NSMutableArray,...
Objective-C&Swift库可以轻松将NSDictionary映射到模型对象,与Alamofire完美配合。 ObjectMapper与GSON类似
JSON Web 令牌的 Objective-c 实现。 在 iOS/MacOS 应用程序上编码和解码 JWT 的简单方法。 哈希算法 SHA256 SHA384 SHA512 应用程序接口 + (NSString *) encodeWithPayload:(NSDictionary *) andKey:...
基础语法:熟悉C语言基础是前提,Objective-C是在C语言的基础上增加了面向对象特性。 面向对象:理解类(Class)、对象(Object)、实例变量(Instance Variables)、方法(Methods)、继承(Inheritance)、封装...
Software engineering,programming language,operating system,iOS,OS,iPhone,iPad objective c,cocoa touch,SDK,object oriented design,Apple,Macintosh,tools,language,runtime,Xcode,objective-...
Objective-C 运行时属性自省 以 NSDictionary 的形式按需打印出类的属性和值。 有关更多信息,请阅读: : 安装 是推荐的安装NSDictionary-Introspect 。 只需Podfile添加到您的Podfile : 播客文件 pod '...
Objective C数组的内存布局要了解NSArray,NSSet,NSDictionary这些集合类的使法,我们需要先弄明其对应的内存布局(Memory L
是Swift和Objective-C Cocoa项目的依赖项管理器。 您可以使用以下命令进行安装: $ sudo gem install cocoapods 要安装Funky,只需Podfile添加到Podfile : pod "FunkyObjC" 然后使用其中任何一个导入 # import ...