昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的。
一、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 charchar * argv[]) {
@autoreleasepool {
//1.---------------------字典的创建
NSArray *array1 = [NSArray arrayWithObjects:@"zhangsan",@"zhangfei", nil nil];
NSArray *array2 = [NSArray arrayWithObjects:@"lisi",@"liping", nil nil]; //第一个元素:key:@"zhang" value:array1
//第二个元素:key:@"li" value:array2
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li", nil 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 ;
}
1、创建方法
//1.---------------------字典的创建
NSArray *array1 = [NSArray arrayWithObjects:@"zhangsan",@"zhangfei", nil nil];
NSArray *array2 = [NSArray arrayWithObjects:@"lisi",@"liping", nil nil]; //第一个元素:key:@"zhang" value:array1
//第二个元素:key:@"li" value:array2
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li", nil nil];
NSLog(@"%@",dict);
我们可以看到,NSDirctionary类的创建是基于NSArray的,然后其他的和Java中的Map就差不多了,一般是key-value的形式,当然这里也是需要注意结尾是:nil
运行结果:
aaarticlea/png;base64,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" alt="" />
打印结果是key-value的样式
2、添加元素
//存放一个元素
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:array1 forKey:@"zhang"];
3、获取所有元素的key
//2.---------------------获取所有的key
NSArray *allKeys = [dict allKeys];
4、获取所有元素的value
//3.---------------------获取所有的value
//可能为二维数组
NSArray *allValues = [dict allValues];
5、通过key获取value
//4.---------------------通过key获取value
NSArray *values = [dict objectForKey:@"zhang"];
6、NSDirctionary的快速创建方式和访问方式
//5.---------------------优化的语法
NSDictionary *dict3 = @{@"zhangsan":array1,@"lisi":array2};
NSLog(@"%@",dict3); NSArray *array4 = dict3[@"zhang"];
二、NSMutableDirctionary类
//
// 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 charchar * argv[]) {
@autoreleasepool {
//1.-------------创建一个可变字典,大小为3
NSMutableDictionary *md1 = [[NSMutableDictionary alloc] initWithCapacity:];
NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lis", nil nil]; //2.-------------添加元素
[md1 setObject:array1 forKey:@"zhang"]; NSMutableDictionary *md2 = [[NSMutableDictionary alloc] initWithCapacity:];
[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=;i<allKey.count;i++){
NSArray *value = [md1 objectForKey:allKey[i]];
} //字典是无序的 }
return ;
}
之前的NSDirctionary类是不可变字典,同样的OC中也有对应的可变字典:NSMutableDirctionary。
1、创建可变字典
//1.-------------创建一个可变字典,大小为3
NSMutableDictionary *md1 = [[NSMutableDictionary alloc] initWithCapacity:];
NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lis", nil nil];
创建一个可变字典,可以指定其大小,当然当容量满的之后,他回自动扩容。
2、添加元素
//2.-------------添加元素
[md1 setObject:array1 forKey:@"zhang"]; NSMutableDictionary *md2 = [[NSMutableDictionary alloc] initWithCapacity:];
[md2 addEntriesFromDictionary:md1];
3、删除元素
//3.-------------删除元素
[md1 removeObjectForKey:@"zhang"];//以key删除
[md1 removeAllObjects];//删除所有元素
[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=;i<allKey.count;i++){
NSArray *value = [md1 objectForKey:allKey[i]];
}
总结
这一篇文章就介绍了OC中的NSDirctionary类和NSMutableDirctionary类,他们的用途在后面非常关键,经常被用到。
(转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类的更多相关文章
-
OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类
昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/4 ...
-
(转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java ...
-
OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于J ...
-
(转载)OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类
在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray ...
-
(转载)OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象
在之前的一篇文章中我们说到了Foundation框架中的NSObject对象,那么今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString. 在OC中 ...
-
(转载)OC学习篇之---Foundation框架中的NSObject对象
前一篇文章讲到了OC中的代理模式,而且前几篇文章就介绍了OC中的类相关知识,从这篇文章开始我们开始介绍Foundation框架. OC中的Foundation框架是系统提供了,他就相当于是系统的一套a ...
-
OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类
我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArr ...
-
OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象
今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutabl ...
-
OC学习篇之---Foundation框架中的NSObject对象
从这篇文章开始我们开始介绍Foundation框架. OC中的Foundation框架是系统提供了,他就相当于是系统的一套api,和Java中的一些系统jar很相似,又早起的一批人开发的,内部有很多现 ...
随机推荐
-
智能指针shared_ptr的用法
为了解决C++内存泄漏的问题,C++11引入了智能指针(Smart Pointer). 智能指针的原理是,接受一个申请好的内存地址,构造一个保存在栈上的智能指针对象,当程序退出栈的作用域范围后,由于栈 ...
-
Session笔记
一.Session机制 session机制採用的是在server端保持 HTTP 状态信息的方案 . server使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序须要为某个cli ...
-
Oracle EBS-SQL (SYS-11):查询系统已打的PATCH.sql
select a.patch_name, b.DRIVER_FILE_NAME, c.language, b.creation_datefrom app ...
-
redis通过pipeline提升吞吐量
案例目标 简单介绍 redis pipeline 的机制,结合一段实例说明pipeline 在提升吞吐量方面发生的效用. 案例背景 应用系统在数据推送或事件处理过程中,往往出现数据流经过多个网元: 然 ...
-
1873: This offer(zzuli)
题目描述 话说WX入职已经有一个多月了,公司boss突然扔给他了一个问题,如果解决不了的话就会被开除掉 - -#,情急之下他只能来请教你了,boss给了他N个不大于100的数,现在wx需要将这N个数通 ...
-
浅析Tomcat、JBOSS、WebSphere、WebLogic、Apache
做任何web项目,都离不开服务器,有钱的公司用WebSphere.WebLogic,没钱公司用nginx+tomcat,不要小瞧nginx+tomcat麻雀虽小,五脏俱全. 服务器的知识,在笔试.面试 ...
-
18,EasyNetQ-使用替代DI容器
EasyNetQ由独立组件组成. 它在内部使用称为DefaultServiceProvider的小型内部DI(IoC)容器. 如果您查看用于创建核心IBus接口实例的静态RabbitHutch类的代码 ...
-
类似于placehoder效果的图标展示
在做app开发的时候往往会有那个注册登录啊,什么的页面,里面就会包含这那种类似于placeholder的效果的图标,当时我也是和ios和安卓混合开发一款app里面的页面全是我写,最开始就是登陆啊,注册 ...
-
使用Redis做为MySQL的缓存
OS: Ubuntu 16.04.4 x64 更新并安装必要的工具 apt update && apt upgrade -y && apt dist-upgrade - ...
-
JS animate动画
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...