NSDictionary 用法

//Dictionary

//不可变

//字典里面:是以键值对存放的

//字典存放顺序是无序的

//字典里面:value可以重复,但key不能重复

//字典里面:key一般用字符串表示,value可用不同的对象来填充

NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"zhangsan" , @"lisi" , @"zhangxiahua" , @"wangdahua" , @"zhaoxiaojie" , @"liuhuaixuan" ,  nil];

NSLog(@"%@" , dic1);

NSLog(@"%ld" , [dic1 count]);

//获取一个字典当中所有的key值

//存放了所有key值的array

NSArray *keyArray = [dic1 allKeys];

for (int i = 0; i < [dic1 count]; i++) {

NSLog(@"%@" , [dic1 objectForKey:[keyArray objectAtIndex:i]]);

//        NSLog(@"%@" , [dic1 objectForKey:[[dic1 allKeys] objectAtIndex:i]]);

}

NSDictionary *dic2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"value1", @"key1" , @"value2" , @"key2" , @"value3" , @"key3" , nil];

NSLog(@"%@" , dic2);

//通过key数组和value数组, 快速创建字典

NSArray *keyArray1 = @[@"key1" , @"key2" , @"key3"];//OC数组方便写法

//        NSLog(@"%@" , keyArray);

NSArray *valueArray = @[@"value1" , @"value2" , @"value3"];

//        NSLog(@"%@" , valueArray);

NSDictionary *dic3 = [[NSDictionary alloc] initWithObjects:valueArray forKeys:keyArray1];

NSLog(@"%@" , dic3);

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

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

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

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

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

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

//字典快速写法

NSDictionary *dic4 = @{@"key1":@"value1" , @"key2":@"value2" , @"key3":@"value"};

NSLog(@"%@" , dic4);

Person *p1 = [Person personWithName:@"ren"];

Student *s2 = [Student personWithName:@"xues"];

Teacher *t3 = [Teacher personWithName:@"sdhdsjh"];

NSDictionary *dic = @{@"key1":p1 , @"key2":s2 , @"key3":t3};

NSLog(@"%@" , dic);

常用方法

获取字典数量

NSInteger count = [dic count];

通过key获取对应的value对象

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

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

NSEnumerator *enumerator = [dic keyEnumerator];

获取所有键的集合

NSArray *keys = [dic allKeys];

获取所有值的集合

NSArray *values = [dic allValues];

初始化一个空的可变字典

NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];

NSDictionary *dic3 = [NSDictionary dictionaryWithObject:@"v3" forKey:@"key3"];

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

[dic2 addEntriesFromDictionary:dic3];

向字典2对象中最佳一个新的key3和value3

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

初始化一个空的可变字典

NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];

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

[dic1 setDictionary:dic2];

将字典中key1对应的值删除

[dic1 [email protected]"key1"];

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

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

[dic2 removeObjectsForKeys:array];

移除字典所有对象

[dic1 removeAllObjects];

//创建一个可变字典

// 用指定空间大小来初始化

NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] initWithCapacity:1];

Person *p1 = [Person personWithName:@"hdilo" andAge:23];

Person *p2 = [Person personWithName:@"hsdsf" andAge:13];

Person *p3 = [Person personWithName:@"bhycu" andAge:56];

Person *p4 = [Person personWithName:@"yusyt" andAge:67];

Person *p5 = [Person personWithName:@"yhudh" andAge:345];

//增

//从一个字典当中拿出放到别的字典里

//[mdic1 addEntriesFromDictionary:mdic2];

[mdic1 setValue:p1 forKey:@"pingguo"];

[mdic1 setValue:p2 forKey:@"dage"];

[mdic1 setValue:p3 forKey:@"haha"];

[mdic1 setValue:p4 forKey:@"hehe"];

//删

[mdic1 removeObjectForKey:@"dage"];

//按照一组key值进行删除

//用mutableCopy方法,将一个不可变的东西转换成一个可变的东西

//NSMutableDictionary *allkey = [[mdic1 allKeys] mutableCopy];

//改

//当给一个字典设定一对值的话 ,如果字典当中已经存在这个key值,就直接把原来key值当中对应的元素替换掉

//如果没有对应key值,就增加这一对设定的值

[mdic1 setValue:p5 forKey:@"hehe"];

[mdic1 setValue:p5 forKey:@"dede"];

//查

//根据key来查找一个value

Person *p6 = [mdic1 objectForKey:@"haha"];

NSLog(@"%@" , p6);

NSLog(@"%@" , mdic1);

遍历字典

快速枚举

for (id key in dic){

id obj = [dic objectForKey:key];

NSLog(@"%@", obj);

}

一般枚举

NSArray *keys = [dic allKeys];

inr length = [keys count];

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

id key = [keys objectAtIndex:i];

id obj = [dic objectForKey:key];

NSLog(@"%@", obj);

}

通过枚举类型枚举

NSEnumerator *enumerator = [dic keyEnumerator];

id key = [enumerator nextObject];

while (key) {

id obj = [dic objectForKey:key];

NSLog(@"%@", obj);

key = [enumerator nextObject];

}

时间: 2024-10-17 23:10:34

NSDictionary 用法的相关文章

黑马程序员--OC基础--NSDictionary用法

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1 #import <Foundation/Foundation.h> 2 3 4 /* 5 字典: 6 key-->value 7 索引-->文字内容 8 9 里面存储的东西都是键值对 10 11 12 */ 1

iOS开发-OC篇-NSSet,NSNumber

最近回顾了OC的一些基本知识,发现确实遗忘了很多重要的东西,今天整理了一些小的知识点,和大家分享一下. iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱和拆箱,来进行OC对象操作. 1.NSNumber包装类 1>  普通初始化 NSNumber * num1 = [[NSNumber alloc] initWithInt:20]; NSNumber * num2 = [NSNumber numberWithChar:'a']; 2>字面量初始化 NSNumber * num3 =

OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化完毕,内容不能改变,也不能添加元素. 而C语言中的数组只能存放一种数据类型 (1) 普通数组的用法 // 普通数组的创建 // int arr[5] = {1,3,4}; // 对象数组的创建 // Person *p = [[Person alloc] init]; // Person *arrP

NSDictionary常用用法

NSArray *aa = [NSArray arrayWithObjects:@"11", @"122", nil];         NSLog(@"%@", aa);         //里面只有一对键值的字典         NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"2134" forKey:@"id"];         N

【转】NSDictionary以及NSMutableDictionary的用法

原文网址:http://my.oschina.net/u/1245365/blog/177736 摘要 Foundation中的字典是由 键—值 对组成的数据集合.通过key(键),查找对应的value(值),key通常是字符串对象,也可以是其他任意的对象,但key的值必须是唯一的.此外,字典对象的key 和value的值不可以为空(nil),如果要表示一个空值,可以用NSNull对象 1.NSDictionary (不可变字典) 字典的初始化 //一个key - value NSDiction

用法总结:NSArray,NSSet,NSDictionary-备用

Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序集合(数组)NSSet 用于对象无序集合      (集合)NSDictionary用于键值映射(字典)以上三种集合类是不可变的(一旦初始化后,就不能改变) 以下是对应的三种可变集合类(这三种可变集合类是对应上面三种集合类的子类):NSMutableArrayNSMutableSet  可修改的集合.主要用于集合运算(并集,交集,差集)NSMutableDict

NSDictionary的初始化及用法

NSDictionary *dictionary=[NSDictionary dictionaryWithObject:@"aa" forKey:@"1"   ]; NSLog(@"%@",dictionary); NSDictionary *dictionary1=[NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"1", nil]; NSLog(@&q

NSDictionary、NSMutableDictionary的基本用法

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源码传送:http://dwz.cn/Nret1 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NS

【转】目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结 -- 不错

原文网址:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java与C 只能保存声明的相同类型的数据,它的关键字为NSDictionary与N