#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. php 之 文件操作(0524)

    php中文件包含两种:文件,文件夹.文件夹又称目录 新建一个文件aa.txt和一个文件夹text,text文件夹下又包含bb.txt 一.判断文件类型filetype("./aa.txt&q ...

  2. php字符串处理之全角半角转换

    半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路. 一.概念 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)半角字符unicode编码 ...

  3. php代码生成二维码

    //引用范例 1 public function index() { 2 echo "<img src='http://qr.liantu.com/api.php?bg=f3f3f3& ...

  4. uc/os 笔记(转)

    1.uC/OS-II中使用互斥信号对象应该注意 互斥信号对象(Mutual Exclusion Semaphore)简称Mutex,是uC/OS-II的内核对象之一,用于管理那些需要独占访问的资源,并 ...

  5. MVC4 路由参数带点 文件名后缀导致错误

    错误描述 最近在研究office在线预览,用到mvc4  apicontroller 需要传参是文件名,如test.docx导致错误"指定的目录或文件在 Web 服务器上不存在", ...

  6. 关于offsetWidth innerWidth的使用

    最近因为有使用到offsetWidth 和innerWidth,刚开始以为这两个属性在jq何js之中是可以通用的,谁知道在js中使用innerWidth时,发现如果对页面元素使用它时,发现出来的是un ...

  7. vsftpd允许root用户登录

    Linux下安装vsftpd之后,默认的配置是 匿名用户可以登录,匿名帐户有两个: 用户名:anonymous 密码:空 用户名:ftp 密码:ftp 如果要用匿名进行上传删除等操作需要配置其它参数. ...

  8. MyBatis里json型字段到Java类的映射

    一.简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是非基本数据类型,在DB存储时我们想存的是json格式的字符串,从DB拿出来时想直接映射成目标类型,也即json格式的字符 ...

  9. 鼠标键盘无法进入:(EE) config/hal: couldn’t initialise context: (null)

    vi /var/log/Xorg.0.log 发现有一行:(EE) config/hal: couldn’t initialise context: (null) 在xorg.conf里面加上下面选项 ...

  10. BZOJ3713: [PA2014]Iloczyn

    3713: [PA2014]Iloczyn Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 206  Solved: 112[Submit][Status ...