昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/41809719,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不同,Java中的Map也是无序的,经过hash值去检索元素的。java
1、NSDirctionary类数组
// // main.m // 19_NSDictionary // // Created by jiangwei on 14-10-12. // Copyright (c) 2014年 jiangwei. All rights reserved. // #import <Foundation/Foundation.h> //由键值对key-value构成的数据集合 int main(int argc, const char * argv[]) { @autoreleasepool { //1.---------------------字典的建立 NSArray *array1 = [NSArray arrayWithObjects:@"zhangsan",@"zhangfei", nil]; NSArray *array2 = [NSArray arrayWithObjects:@"lisi",@"liping", nil]; //第一个元素:key:@"zhang" value:array1 //第二个元素:key:@"li" value:array2 NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li", nil]; NSLog(@"%@",dict); //存放一个元素 NSDictionary *dict2 = [NSDictionary dictionaryWithObject:array1 forKey:@"zhang"]; //2.---------------------获取全部的key NSArray *allKeys = [dict allKeys]; //3.---------------------获取全部的value //可能为二维数组 NSArray *allValues = [dict allValues]; //4.---------------------经过key获取value NSArray *values = [dict objectForKey:@"zhang"]; //5.---------------------优化的语法 NSDictionary *dict3 = @{@"zhangsan":array1,@"lisi":array2}; NSLog(@"%@",dict3); NSArray *array4 = dict3[@"zhang"]; } return 0; }
//1.---------------------字典的建立 NSArray *array1 = [NSArray arrayWithObjects:@"zhangsan",@"zhangfei", nil]; NSArray *array2 = [NSArray arrayWithObjects:@"lisi",@"liping", nil]; //第一个元素:key:@"zhang" value:array1 //第二个元素:key:@"li" value:array2 NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li", nil]; NSLog(@"%@",dict);咱们能够看到,NSDirctionary类的建立是基于NSArray的,而后其余的和Java中的Map就差很少了,通常是key-value的形式,固然这里也是须要注意结尾是:nil
运行结果:框架
打印结果是key-value的样式学习
二、添加元素优化
//存放一个元素 NSDictionary *dict2 = [NSDictionary dictionaryWithObject:array1 forKey:@"zhang"];
//2.---------------------获取全部的key NSArray *allKeys = [dict allKeys];
//3.---------------------获取全部的value //可能为二维数组 NSArray *allValues = [dict allValues];
//4.---------------------经过key获取value NSArray *values = [dict objectForKey:@"zhang"];
//5.---------------------优化的语法 NSDictionary *dict3 = @{@"zhangsan":array1,@"lisi":array2}; NSLog(@"%@",dict3); NSArray *array4 = dict3[@"zhang"];
2、NSMutableDirctionary类spa
// // main.m // 20_NSMutableDictionary // // Created by jiangwei on 14-10-12. // Copyright (c) 2014年 jiangwei. All rights reserved. // #import <Foundation/Foundation.h> //可变字典 int main(int argc, const char * argv[]) { @autoreleasepool { //1.-------------建立一个可变字典,大小为3 NSMutableDictionary *md1 = [[NSMutableDictionary alloc] initWithCapacity:3]; NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lis", nil]; //2.-------------添加元素 [md1 setObject:array1 forKey:@"zhang"]; NSMutableDictionary *md2 = [[NSMutableDictionary alloc] initWithCapacity:3]; [md2 addEntriesFromDictionary:md1]; //3.-------------删除元素 [md1 removeObjectForKey:@"zhang"];//以key删除 [md1 removeAllObjects];//删除全部元素 [md1 removeObjectsForKeys:array1];//以value删除 //4.-------------循环遍历字典 //快速遍历 for (NSString *key in md1) { NSArray *values = [md1 objectForKey:key]; for(NSString *v in values){ NSLog(@"%@",v); } } //普通遍历 NSArray *allKey = [md1 allKeys]; for(int i=0;i<allKey.count;i++){ NSArray *value = [md1 objectForKey:allKey[i]]; } //字典是无序的 } return 0; }以前的NSDirctionary类是不可变字典,一样的OC中也有对应的可变字典:NSMutableDirctionary
一、建立可变字典.net
//1.-------------建立一个可变字典,大小为3 NSMutableDictionary *md1 = [[NSMutableDictionary alloc] initWithCapacity:3]; NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lis", nil];建立一个可变字典,能够指定其大小,固然当容量满的以后,他回自动扩容
二、添加元素code
//2.-------------添加元素 [md1 setObject:array1 forKey:@"zhang"]; NSMutableDictionary *md2 = [[NSMutableDictionary alloc] initWithCapacity:3]; [md2 addEntriesFromDictionary:md1];
//3.-------------删除元素 [md1 removeObjectForKey:@"zhang"];//以key删除 [md1 removeAllObjects];//删除全部元素 [md1 removeObjectsForKeys:array1];//以value删除
//4.-------------循环遍历字典 //快速遍历 for (NSString *key in md1) { NSArray *values = [md1 objectForKey:key]; for(NSString *v in values){ NSLog(@"%@",v); } } //普通遍历 NSArray *allKey = [md1 allKeys]; for(int i=0;i<allKey.count;i++){ NSArray *value = [md1 objectForKey:allKey[i]]; }
这一篇文章就介绍了OC中的NSDirctionary类和NSMutableDirctionary类,他们的用途在后面很是关键,常常被用到。
blog
版权声明:本文为博主原创文章,未经博主容许不得转载。ip