#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
//NSDictionary字典对象,字典主要特征是一对一的key和value组成
//不可变字典
//初始化字典,一半key值是字符串对象,控制用NSNull对象表示
NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"velue1" forKey:@"key1"];
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"value2",@"key2",@"value3",@"key3",nil];
NSDictionary *dic3 = [NSDictionary dictionaryWithDictionary:dic1];
//值与键都为数组,需要注意的是value数组与key数组的元素个数要保持一致,因为字典都是键值对,要一一对应,nil不会计入字典数量中
NSArray *arrValue = [NSArray arrayWithObjects:@"hello",@"world",@"!",@"test", nil];
NSArray *arrKey = [NSArray arrayWithObjects:@"keyOne",@"keyTow",@"keyThree",@"keytest", nil];
NSDictionary *dic4 = [NSDictionary dictionaryWithObjects:arrValue forKeys:arrKey];
NSLog(@"%@",dic2);
NSLog(@"%@",dic3);
NSLog(@"%@",dic4);
//获取字典的数量
NSInteger count = [dic4 count];
NSLog(@"%ld",count);
//通过key获取value值
NSObject *objNew = [dic2 objectForKey:@"key2"];
NSLog(@"%@",objNew);
NSObject *objtest = [dic4 objectForKey:@"keyOne"];
NSLog(@"---------%@",objtest);
//通过数组中的key匹配字典
NSArray * test = [NSArray arrayWithObjects:@"keyOne",@"keyThree", nil];
NSObject *objNew1 = [dic4 objectsForKeys:test notFoundMarker:@"error"];
NSLog(@"%@",objNew1);
//将字典的key变成一个枚举对象用于遍历
NSEnumerator *enumerator = [dic4 keyEnumerator];
//枚举遍历法(keyEnumerator)
id key = [enumerator nextObject];
while (key) {
id object = [dic4 objectForKey:key];
NSLog(@"%@",object);
key = [enumerator nextObject];//不复写key的值,会陷入死循坏
}
//获取字典所有key集合
NSArray *arrKey1 = [dic2 allKeys];
NSLog(@"%@",arrKey1);
//获取字典所有value集合
NSArray *arrValue1 = [dic2 allValues];
NSLog(@"%@",arrValue1); //可变字典
//初始化可变字典
NSMutableDictionary *mudic1 = [NSMutableDictionary dictionary];
NSLog(@"%@",mudic1);//为空
NSMutableDictionary *mudic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2", nil];
//把一个字典加入到另一个字典中(把mudic2添加到mudic1中)
[mudic1 addEntriesFromDictionary:mudic2];
NSLog(@"%@",mudic1);
//给字典新添增元素
[mudic1 setObject:@"Augus" forKey:@"key1"];
NSLog(@"%@",mudic1);
//把一个字典的内容设置为跟另一个字典内容相同(把mudic1的内容设置为mudic2一样)
[mudic1 setDictionary:mudic2];
NSLog(@"%@",mudic1);
//移除字典元素
[mudic1 removeObjectForKey:@"k2"];
NSLog(@"%@",mudic1);
//快速遍历方法
for (id key in mudic2) {
id objx = [mudic2 objectForKey:key];
NSLog(@"%@",objx);
}
//常用遍历方法,首先获取到key的集合,然后通过遍历key集合来实现字典value的遍历
NSArray *keyarr = [mudic2 allKeys];
NSInteger num = [keyarr count];
for (int i=0; i<num; i++) {
id keyx = [keyarr objectAtIndex:i];
id valuex = [mudic2 objectForKey:keyx];
NSLog(@"%@",valuex);
}
}
return 0;
}

oc随笔六:字典的更多相关文章

  1. OC基础 可变字典与不可变字典的使用

    OC基础 可变字典与不可变字典的使用 1.不可变字典 1.1创建不可变字典 //创建字典 //注意: //1,元素个数是偶数 //2,每两个元素是一个键值对 //3,值在前,键在后 NSDiction ...

  2. OC中的字典

    // ********************不可变最字典***************** /* NSDictionary * dic = [NSDictionary dictionaryWithO ...

  3. OC中的字典NSDictionary

    ========================== 字典 ========================== NSDictionary * dict = [[NSDictionary alloc] ...

  4. OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏

    ==============NSArray(不可变数组)=========== NSArray,继承自NSObject  用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray ...

  5. oc字符串+数组+字典操作题目

    1. 判断中间目录是否存在 (10分) 比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng" 返回:YES 传入字符串 ...

  6. OC第六节—— 继承与类别

    1.继承:    父类和子类的关系.    1.1 生活中的继承        父类           子类           父类              子类                 ...

  7. OC随笔一:类

    总结:        在oc中,我们要整出一个类来,首先需要一个.h头文件和一个.m实现文件.一般我们创建的类都继承了根类,因为根类帮我们实现了很多实用的方法,而类里面会有变量(属性) .函数(方法) ...

  8. oc随笔二:组合、继承

    在oc中如果没有使用ARC的话,手动管理内存一定要注意处理好“野指针”,通常我们在释放指针的指向的地址时,都要将指针赋值为nil,这样能有效的防止野指针.常用的关键字:retain.assign .s ...

  9. iOS开发-OC语言 (五)字典

    字典 主要知识点: 1.NSDictionary 类 2.NSMutableDictionary 类 3.了解NSMutableDictionary 与 NSDictionary 的继承关系 4.补充 ...

随机推荐

  1. myeclipseb笔记(4):拷贝文件的相应配置

    在MyEclipse中,经常需要用到拷贝工程文件,但是直接拷贝的话,就会出现访问不了的情况,如下: 原文件learn/StudManage/login.jsp,访问: 拷贝工程,改名,访问: 就出现了 ...

  2. Sudoku Killer

    算法:深搜 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份 ...

  3. Sed命令学习

    1.Sed简介     流数据编辑器 Stream editer(sed),它是一种行编辑器(对应于全屏编辑器),一次处理一行的内容.默认不编辑原文件内容(-i会直接修改原文件).处理时,它先将当前符 ...

  4. 织梦DEDECMS网站首页如何实现分页翻页

    织梦DEDECMS模板网站首页如何实现首页分页和翻页 方法如下:(三种方法,自己选择一种来实现分页吧) 第一种:调用ajax和参数的(不推荐)1.必须在DEDE首页模板中的<head>&l ...

  5. 各种位置和高度计算:.position()、.offset()、.outerHeight()、.scrollTop、.scrollHeight、.clientHeight

    1..position()和.offset() jquery的.position()获取相对于最近的position为relative或absolute的父元素的偏移,返回.position().le ...

  6. Spring boot构建基于rest的Web服务

    一.介绍:使用Spring Boot我们可以很容易的创建一个可独立运行的Rest web服务,其中内嵌tomact,我们只需“run”就可以查看效果了. Spring Boot利用Gradle或Mav ...

  7. C++类的数组元素查找最大值问题

    找出一个整型数组中的元素的最大值. /*找出一个整型数组中的元素的最大值.*/ #include <iostream> using namespace std; class ArrayMa ...

  8. 使IE6支持:hover效果

    :hover是在CSS中用来制作效果最常用到的一个伪类,比如:标签或div上的鼠标悬停效果 li:hover,div:hover等. 但这种效果是css2及以上版本才添加的,对于只支持css1的浏览器 ...

  9. bzoj1681[Usaco2005 Mar]Checking an Alibi 不在场的证明

    Description A crime has been comitted: a load of grain has been taken from the barn by one of FJ's c ...

  10. ops

    consists several key projects separately stand-alone connected entities massive scalability massive ...