博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类
阅读量:5134 次
发布时间:2019-06-13

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

昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的。

一、NSDirctionary类

1 //   2 //  main.m   3 //  19_NSDictionary   4 //   5 //  Created by jiangwei on 14-10-12.   6 //  Copyright (c) 2014年 jiangwei. All rights reserved.   7 //   8    9 #import 
10 11 //由键值对key-value构成的数据集合 12 int main(int argc, const charchar * argv[]) { 13 @autoreleasepool { 14 //1.---------------------字典的创建 15 NSArray *array1 = [NSArray arrayWithObjects:@"zhangsan",@"zhangfei", nil nil]; 16 NSArray *array2 = [NSArray arrayWithObjects:@"lisi",@"liping", nil nil]; 17 18 //第一个元素:key:@"zhang" value:array1 19 //第二个元素:key:@"li" value:array2 20 NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li", nil nil]; 21 NSLog(@"%@",dict); 22 23 //存放一个元素 24 NSDictionary *dict2 = [NSDictionary dictionaryWithObject:array1 forKey:@"zhang"]; 25 26 27 //2.---------------------获取所有的key 28 NSArray *allKeys = [dict allKeys]; 29 30 31 //3.---------------------获取所有的value 32 //可能为二维数组 33 NSArray *allValues = [dict allValues]; 34 35 36 //4.---------------------通过key获取value 37 NSArray *values = [dict objectForKey:@"zhang"]; 38 39 40 //5.---------------------优化的语法 41 NSDictionary *dict3 = @{
@"zhangsan":array1,@"lisi":array2}; 42 NSLog(@"%@",dict3); 43 44 NSArray *array4 = dict3[@"zhang"]; 45 46 47 } 48 return 0; 49 }

1、创建方法

1 //1.---------------------字典的创建  2 NSArray *array1 = [NSArray arrayWithObjects:@"zhangsan",@"zhangfei", nil nil];  3 NSArray *array2 = [NSArray arrayWithObjects:@"lisi",@"liping", nil nil];  4   5 //第一个元素:key:@"zhang" value:array1  6 //第二个元素:key:@"li"  value:array2  7 NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li", nil nil];  8 NSLog(@"%@",dict);

我们可以看到,NSDirctionary类的创建是基于NSArray的,然后其他的和Java中的Map就差不多了,一般是key-value的形式,当然这里也是需要注意结尾是:nil

运行结果:

打印结果是key-value的样式

2、添加元素

1 //存放一个元素  2 NSDictionary *dict2 = [NSDictionary dictionaryWithObject:array1 forKey:@"zhang"];

3、获取所有元素的key

1 //2.---------------------获取所有的key  2 NSArray *allKeys = [dict allKeys];

4、获取所有元素的value

1 //3.---------------------获取所有的value  2 //可能为二维数组  3 NSArray *allValues = [dict allValues];

5、通过key获取value

1 //4.---------------------通过key获取value  2 NSArray *values = [dict objectForKey:@"zhang"];

6、NSDirctionary的快速创建方式和访问方式

1 //5.---------------------优化的语法  2 NSDictionary *dict3 = @{
@"zhangsan":array1,@"lisi":array2}; 3 NSLog(@"%@",dict3); 4 5 NSArray *array4 = dict3[@"zhang"];

 

二、NSMutableDirctionary类

1 //   2 //  main.m   3 //  20_NSMutableDictionary   4 //   5 //  Created by jiangwei on 14-10-12.   6 //  Copyright (c) 2014年 jiangwei. All rights reserved.   7 //   8    9 #import 
10 11 //可变字典 12 int main(int argc, const charchar * argv[]) { 13 @autoreleasepool { 14 //1.-------------创建一个可变字典,大小为3 15 NSMutableDictionary *md1 = [[NSMutableDictionary alloc] initWithCapacity:3]; 16 NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lis", nil nil]; 17 18 19 //2.-------------添加元素 20 [md1 setObject:array1 forKey:@"zhang"]; 21 22 NSMutableDictionary *md2 = [[NSMutableDictionary alloc] initWithCapacity:3]; 23 [md2 addEntriesFromDictionary:md1]; 24 25 26 //3.-------------删除元素 27 [md1 removeObjectForKey:@"zhang"];//以key删除 28 [md1 removeAllObjects];//删除所有元素 29 [md1 removeObjectsForKeys:array1];//以value删除 30 31 32 //4.-------------循环遍历字典 33 //快速遍历 34 for (NSString *key in md1) { 35 NSArray *values = [md1 objectForKey:key]; 36 for(NSString *v in values){ 37 NSLog(@"%@",v); 38 } 39 } 40 41 //普通遍历 42 NSArray *allKey = [md1 allKeys]; 43 for(int i=0;i

之前的NSDirctionary类是不可变字典,同样的OC中也有对应的可变字典:NSMutableDirctionary。

1、创建可变字典

1 //1.-------------创建一个可变字典,大小为3  2 NSMutableDictionary *md1 = [[NSMutableDictionary alloc] initWithCapacity:3];  3 NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lis", nil nil];
 

创建一个可变字典,可以指定其大小,当然当容量满的之后,他回自动扩容。

2、添加元素

1 //2.-------------添加元素  2 [md1 setObject:array1 forKey:@"zhang"];  3   4 NSMutableDictionary *md2 = [[NSMutableDictionary alloc] initWithCapacity:3];  5 [md2 addEntriesFromDictionary:md1];

3、删除元素

1 //3.-------------删除元素  2 [md1 removeObjectForKey:@"zhang"];//以key删除  3 [md1 removeAllObjects];//删除所有元素  4 [md1 removeObjectsForKeys:array1];//以value删除

4、遍历字典

//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

 

总结

这一篇文章就介绍了OC中的NSDirctionary类和NSMutableDirctionary类,他们的用途在后面非常关键,经常被用到。

转载于:https://www.cnblogs.com/iLillian/p/4199444.html

你可能感兴趣的文章
Red and Black(poj-1979)
查看>>
安装 Express
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
Java SE和Java EE应用的性能调优
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
继承条款effecitve c++ 条款41-45
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>