文档章节

OC之之NSDictionary/NSMutableDictionary

feng_blog
 feng_blog
发布于 2015/09/02 10:32
字数 625
阅读 87
收藏 1

NSDictionary/NSMutableDictionary特点:

(1)里存储的东西都是键值对

(2)可以像数组一样快速创建(适用NSDictionary):@{key1 : value1,  key2 : value2}

(3)快速访问元素:字典名 [key]

比如可以这样为指定key赋值:

dic [@”key1”] = @”value1”;

快速获取key所对应的value

NSString *name = dic[@”name”];//存储的是String

或者:

NSDictionary *userdic = dic[@”user”];//存储的是NSDictionary

NSString *name = userdic [@”name”];

(4)字典不允许有相同的key,但允许有相同的valueObject

(5)字典是无序的

1、不可变词典NSDictionary

字典初始化:

1)以一个元素初始化

NSDictionary *dic = [NSDictionary dictionaryWithObject:numObj forKey:@"key"];

2)初始化两个元素

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:

numObj, @"valueKey", numObj2, @"value2",nil];

3)初始化新字典,新字典包含otherDic

NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];

4)以文件内容初始化字典

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

(1)也可创建多维字典

使用快速创建的方式:

NSArray *persons = @[

          @{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5分钟突破iOS编程", @"5分钟突破android编程"]},

    @{@"name" : @"rose", @"qq" : @"767567"},

    @{@"name" : @"jim", @"qq" : @"423423"},

    @{@"name" : @"jake", @"qq" : @"123123213"}

];

访问:

NSLog(@"%@", persons[1][@"qq"]);

上述代码含义:

先取出1位置对应的字典

再取出字典中qq这个key对应的数据

常用方法:

1)获取字典数量

NSInteger count = [dic count];

2)通过key获取对应的value对象

NSObject *valueObj = [dic objectForKey:@"key"];

3)将字典的key转成枚举对象,用于遍历

NSEnumerator *enumerator = [dic keyEnumerator];

4)获取所有键的集合

NSArray *keys = [dic allKeys];

5)获取所有值的集合

NSArray *values = [dic allValues];

2、可变数组NSMutableDictionary

1)初始化一个空的可变字典

NSMutableDictionary *dic2 = [NSMutableDictionary

dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];

 

NSDictionary *dic3 = [NSDictionary dictionaryWithObject:

@"v3" forKey:@"key3"];

2)向字典2对象中添加整个字典对象3

[dic2 addEntriesFromDictionary:dic3];

3)向字典2对象中最佳一个新的key3value3

[dic2 setValue:@"value3" forKey:@"key3"];

4)初始化一个空的可变字典

NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];

5)将空字典1对象内容设置与字典2对象相同

[dic1 setDictionary:dic2];

6)将字典中key1对应的值删除

[dic1 removeObjectForKey@"key1"];

NSArray *array = [NSArray arrayWithObjects:@"key1", nil];

7)根据指定的数组(key)移除字典1的内容

[dic2 removeObjectsForKeys:array];

8)移除字典所有对象

[dic1 removeAllObjects];

 

3、遍历字典

1)快速枚举

for (id key in dic){

     id obj = [dic objectForKey:key];

     NSLog(@"%@", obj);

}

2)一般枚举

NSArray *keys = [dic allKeys];

inr length = [keys count];

for (int i = 0; i < lengthi++){

     id key = [keys objectAtIndex:i];

     id obj = [dic objectForKey:key];

     NSLog(@"%@", obj);

}

3)通过枚举类型枚举

NSEnumerator *enumerator = [dic keyEnumerator];

id key = [enumerator nextObject];

while (key) {

        id obj = [dic objectForKey:key];

        NSLog(@"%@", obj);

        key = [enumerator nextObject];

}


© 著作权归作者所有

feng_blog

feng_blog

粉丝 120
博文 130
码字总数 105422
作品 3
朝阳
iOS工程师
私信 提问
Foundation框架之集合

一、NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组。 C语言数组有一个缺点即数...

DevShaw
2016/01/07
14
0
OC中字典基本概念和常用方法(NSDictionary和NSMutableDictionary)

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

JoshSone
2016/09/07
92
2
OC语言自学《十二》---- OC(Foundation框架部分知识总结)

NSRange 表示一个范围 主要用来操作字符串 CGPoint、NSPoint 通过设置x坐标和y坐标来设置某个点 IOS设备的x和y从左上角开始,y值往下面增加,x值往右面增加 CGSize、NSSize 表示一个矩形尺寸...

罗眯眯
2014/04/09
2K
0
OC中的NSDictionary(字典)

字典的基本概念 OC中的字典(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样. 通过key(键),查找的对应的value(值),key通常是字符串对象...

Dumplings
2016/03/31
27
0
OC中的深浅拷贝(copy, MutableCopy)

int main(int argc, const char * argv[]) { @autoreleasepool { //------------------不可变的对象------------------- //创建一个字符串型a NSString *a = @"abcdefg"; //浅拷贝a,只是引用......

Dumplings
2016/04/05
46
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
3分钟前
2
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
6分钟前
1
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
32分钟前
2
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
5
0
前端技术之:webpack热模块替换(HMR)

第一步:安装HMR中间件: npm install --save-dev webpack-hot-middleware 第二步:webpack配置中引入webpack对象 const webpack = require('webpack’); 第三步:增加devServer配置项: ho......

popgis
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部