博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSDictionary和NSMutableDictionary的用法
阅读量:5997 次
发布时间:2019-06-20

本文共 2553 字,大约阅读时间需要 8 分钟。

hot3.png

做过Java语言或者C语言开发的朋友应该很清楚 关键字map吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便。在Objective-C语言中 词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java与C 只能保存声明的相同类型的数据,它的关键字为NSDictionary与NSMutableDictionary。阅读过我之前文章的朋友应该从关键字的 结构就可以看出这两个的区别。很明显前者为不可变词典,或者为可变词典。

NSDictionary *dict;

for(NSString * akey in dict)

{

  //........

}很好用

1.创建不可变词典

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

[NSDictionary initWithObjectsAndKeys:..] :使用键值对儿初始化词典对象,结尾必需使用nil标志结束。

[dictionary count]: 得到词典的长度单位。

[dictionary keyEnumerator]: 将词典的所有KEY储存在NSEnumerator中,NSEnumerator很像Java语言 中的迭代器,使用快速枚举可以遍历词典中所有储存KEY值。

[dictionary  objectEnumerator]: 将词典的所有value储存在NSEnumerator中,用法和上面差不多可用来遍历KEY对应储存的Value值。

[dictionary objectForKey:key]: 通过传入KEY对象可以拿到当前KEY对应储存的值。

 
  main( argc,  *argv[]){    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];              NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:,,,, nil];             count = [dictionary count];    NSLog(,count);            NSEnumerator * enumeratorKey = [dictionary keyEnumerator];             (NSObject *  enumeratorKey) {        NSLog(,);    }             NSEnumerator * enumeratorValue = [dictionary objectEnumerator];             (NSObject *  enumeratorValue) {        NSLog(,);    }            NSObject * = [dictionary objectForKey:];         ( != nil) {        NSLog(,);    }                 retVal = UIApplicationMain(argc, argv, nil, nil);    [pool release];     retVal;}

153443_uSd2_1244156.png

2.创建可变词典对象

NSMutableDictionary 是NSDictionary的子类,所以继承了NSDictionary的方法。

[NSMutableDictionary dictionaryWithCapacity:10] : 创建一个可变词典初始指定它的长度为10.,动态的添加数据如果超过10这个词典长度会自动增加,所以不用担心数组越界。推荐用这种方式

[NSMutableDictionary initWithCapacity:10]  :只是初始化一个词典的长度为10。

[dictionary setObject:@"雨松MOMO" forKey:@"name"] :向可变的词典动态的添加数据 ,这里的key是name ,值是雨松MOMO如果词典中存在这个KEY的数据则直接替换这个KEY的值。(易混的地方,慎重!)

[dictionary removeAllObjects..] : 删除掉词典中的所有数据。

[dictionary removeObjectForKey..] :删除掉词典中指定KEY的数据 。

 <UIKit/UIKit.h>

  main( argc,  *argv[]){    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];          NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:];           [dictionary setObject: forKey:];        [dictionary setObject: forKey:];                NSObject * = [dictionary objectForKey:];         ( != nil) {        NSLog(,);    }                 retVal = UIApplicationMain(argc, argv, nil, nil);    [pool release];     retVal;}

153511_wgze_1244156.png

词典类的存在就是为了解决在大量数据中查找方便,因为它是通过key直接找到value所以速度很快,避免一个个的遍历寻找造成的效率低下,善用字典类会帮你的程序提速。

转载于:https://my.oschina.net/u/1244156/blog/195033

你可能感兴趣的文章
Quartz_1_简单编程式任务调度使用(SimpleTrigger)
查看>>
配置apache使用https访问
查看>>
Linux/Ubuntu 解压命令(.tar、.gz、.tar.gz、.bz2、.tar.bz2、.zip、.rar等)
查看>>
uva10098 Generating Fast, Sorted Permutation
查看>>
微信小程序码canvas生成分享海报
查看>>
PhoneGap学习地址 / PhoneGap API介绍:Events
查看>>
vue.js的安装部署+cnpm install 安装过程卡住不动----亲测可用
查看>>
add number line in vim
查看>>
python 使用__neg__和__iter__
查看>>
C# WinForm程序处理后台繁忙导致前台控件假死现象解决方法
查看>>
web api 初体验 解决js调用跨域问题
查看>>
ubuntu 系统启动异常之无登录界面和版本号启动四个点的地方卡住
查看>>
【软工】第 二 次作业(结对项目)
查看>>
ERP结账不自动清台的解决办法
查看>>
MATLAB产生离散信号
查看>>
触摸事件
查看>>
第三次立会啦
查看>>
-----第一讲----第二节--------------什么是算法?-------------------------------------
查看>>
计算机网络知识点总结
查看>>
php入门学习相关函数
查看>>