文档章节

目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结

zbser
 zbser
发布于 2014/04/27 20:59
字数 726
阅读 3871
收藏 0
点赞 0
评论 0

做过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对应储存的值。


 <UIKit/UIKit.h>
 
 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;
}


 

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;
}

复制代码

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


本文转载自:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html

共有 人打赏支持
zbser
粉丝 1
博文 27
码字总数 4909
作品 0
绍兴
高级程序员
NSDictionary以及NSMutableDictionary的用法

1、NSDictionary (不可变字典) 字典的初始化 //一个key - value NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"@123" forKey:@"key1"]; //两个以上 key - value NSDictiona......

lady-奕奕
2013/11/20
0
0
NSDictionary和NSMutableDictionary的用法

做过Java语言或者C语言开发的朋友应该很清楚 关键字map吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便。在Objective-C语言中 词典对象就是做...

今日竹石
2014/01/22
0
0
NSDictionary和NSMutableDictionary的用法

做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便。在Objective-C语言中 词典对象就...

今日竹石
2014/02/07
0
1
Objective-C 语法之词典对象(NSDictionary/NSMutableDictionary)

做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便。在Objective-C语言中 词典对象就...

鉴客
2011/10/04
9.3K
1
Objective-C语法之词典对象的那些事儿(八)

Objective-C语法之词典对象的那些事儿 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常...

彭博
2012/03/09
61
0
OC中字典基本概念和常用方法(NSDictionary和NSMutableDictionary)

一:字典的基本概念 Foundation中的字典(NSDictionary和NSMutableDictionary)是由键(key)和值(value)组成的数值集合,就像我们查字典一样,通过键(key)来查找到值(value)。 key值通...

JoshSone
2016/09/07
8
2
iOS项目开发中,对后台返回数据为时候的处理,避免取值产生程序崩溃问题

大致实现思路就是循环遍历做比较,如果发现是NSNull类型的就把值改为空字符串;这样的好处就是当数据请求回来,删除一下数据里面为类型的东西,避免在直接取的时候产生程序崩溃问题; 两个方...

wakice
01/25
0
0
(绝对有用)iOS获取UUID,并使用keychain存储

UDID被弃用,使用UUID来作为设备的唯一标识。获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了。使用keychain存储可以保证程序卸载重装时,UUID不...

Align
2016/01/12
28
0
NSDictionary和NSMutableDictionary介绍

一、NSDictionary的介绍: NSDictionary翻译过来叫做”字典” 日常生活中, “字典”的作用:通过一个拼音或者汉字,就能找到对应的详细解释 类似通过一个key,就能找到对应的value。 NSDictiona...

这孤独世界幸好有你丶
2016/09/20
8
0
OC之之NSDictionary/NSMutableDictionary

NSDictionary/NSMutableDictionary特点: (1)里存储的东西都是键值对 (2)可以像数组一样快速创建(适用NSDictionary):@{key1 : value1, key2 : value2} (3)快速访问元素:字典名 [k...

feng_blog
2015/09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java示例演示Functor 和monad

This article was initially an appendix in our Reactive Programming with RxJavabook. However introduction to monads, albeit very much related to reactive programming, didn't suit......

Quan全
22分钟前
0
0
微信官方jssdk Demo

1.html部分 <!DOCTYPE html><!-- saved from url=(0028){sh:$selfUrl} --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"......

koloor
26分钟前
1
0
数据库命名规范

https://www.cnblogs.com/pangguoming/p/7126512.html 摘要:当前研发工作中经常出现因数据库表、数据库表字段格式不规则而影响开发进度的问题,在后续开发使用原来数据库表时,也会因为数据...

塔塔米
26分钟前
0
0
java https 请求工具类-通用

package com.ra.common.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintW......

轻量级赤影
27分钟前
0
0
MFC界面套包BCG Pro Edition for MFC正式发布v27.3|附下载

BCGControlBar Professional Edition for MFC是MFC的一个扩展库,您可以用来构建类似于Microsoft Office 2000/XP/2003/2007/2010/2013 和 Microsoft Visual Studio-like(打印、用户定制工具......

Miss_Hello_World
27分钟前
0
0
Spring Cloud云服务 - HongHu架构common-service 项目构建过程

上一篇我们介绍了《整合spring cloud云服务架构 - HongHu云架构common-service代码结构分析》,本节我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来...

itcloud
27分钟前
0
0
Connection reset

在使用HttpClient调用后台resetful服务时,“Connection reset”是一个比较常见的问题,有同学跟我私信说被这个问题困扰很久了,今天就来分析下,希望能帮到大家。例如我们线上的网关日志就会...

夜黑人模糊灬
32分钟前
0
0
如何写PHP规范注释

所有的文档标记都是在每一行的 * 后面以@开头。如果在一段话的中间出来@的标记,这个标记将会被当做普通内容而被忽略掉。 @access 该标记用于指明关键字的存取权限:private、public或prote...

度_
32分钟前
0
0
influxDB Ppostgis

PostGis 1.需要安装postgreSQL,postgis作为插件嵌入到postgreSQL中; 2.使用zip包直接安装,需要修改 makepostgisdb_using_extensions.bat文件中的路径,用户名,密码,然后直接运行; 3.没有...

courtzjl
36分钟前
0
0
多线程Thread-多线程顺序执行

需求:现在有两个任务,任务1和任务2,任务1中有多个线程,并且任务2必须等任务1完成后才能执行。 namespace TThread{ class Program { static void Main(string[] ar...

kaixinguo314
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部