oc随笔六:字典
#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随笔六:字典的更多相关文章
- OC基础 可变字典与不可变字典的使用
OC基础 可变字典与不可变字典的使用 1.不可变字典 1.1创建不可变字典 //创建字典 //注意: //1,元素个数是偶数 //2,每两个元素是一个键值对 //3,值在前,键在后 NSDiction ...
- OC中的字典
// ********************不可变最字典***************** /* NSDictionary * dic = [NSDictionary dictionaryWithO ...
- OC中的字典NSDictionary
========================== 字典 ========================== NSDictionary * dict = [[NSDictionary alloc] ...
- OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏
==============NSArray(不可变数组)=========== NSArray,继承自NSObject 用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray ...
- oc字符串+数组+字典操作题目
1. 判断中间目录是否存在 (10分) 比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng" 返回:YES 传入字符串 ...
- OC第六节—— 继承与类别
1.继承: 父类和子类的关系. 1.1 生活中的继承 父类 子类 父类 子类 ...
- OC随笔一:类
总结: 在oc中,我们要整出一个类来,首先需要一个.h头文件和一个.m实现文件.一般我们创建的类都继承了根类,因为根类帮我们实现了很多实用的方法,而类里面会有变量(属性) .函数(方法) ...
- oc随笔二:组合、继承
在oc中如果没有使用ARC的话,手动管理内存一定要注意处理好“野指针”,通常我们在释放指针的指向的地址时,都要将指针赋值为nil,这样能有效的防止野指针.常用的关键字:retain.assign .s ...
- iOS开发-OC语言 (五)字典
字典 主要知识点: 1.NSDictionary 类 2.NSMutableDictionary 类 3.了解NSMutableDictionary 与 NSDictionary 的继承关系 4.补充 ...
随机推荐
- 【原创】Freak3D printer 的Repetier-Host 的设置
软件版本号:Repetier-Host 版本号 1.6.1 操作系统: win10 x64 专业版 3d打印机: Freak3D: 1. freak3D的相关参数(通过freak3D的官方打印文件得到 ...
- linux下enum的使用
enum T { status1, status2, } Linux下: 1.做函数返回值时enum T f():不能写成T f(): 2.if(i == status1)不能写成 if(i == T ...
- angular ng-bind-html 对src路径失效 解决方案
json内容 ;<img src="/newsfile/1506271512489.jpg" width="600" height="450&q ...
- js的一个稍微高级点的用法
通过问题来说明: 1.一个系统中,要创造很多对象,为每个对象分配一个唯一的ID 1: var createObj = (function(){ 2: var i = 0; 3: return func ...
- Android再学习-便签开发小结-20141119
这几天的便签开发,首先遇到的问题就是数据库操作问题.现在已经可以读写数据库了,并能将数据放在正确的位置显示. 专门建立了一个数据库操作的包,命名为"...database".新建一 ...
- IOS流媒体播放
IOS流媒体播放 1. 这里的流媒体地址是指服务端那边已经调好格式的可以在ios上播放的视频流. 下面提供几个视频流的地址: NSString *linkStr = http://61.160.2 ...
- RSYSLOG没那么简单
定义系统默认的日志收集还算EASY. 但如何在公司项目里要配置程序员们写的自定义日志,那可能就要用到LOCAL及FILTER过滤这些东东了... 慢慢走吧.. 收集URL备用,都是讲LOCAL,TEM ...
- Unity 3D中的菜单项
1.File菜单:主要是包含项目和场景的创建.保存以及输出等功能.2.Edit(编辑)菜单:只要包括对场景进行一系列的编辑以及环境设置操作等命令.3.Assets(资源)菜单:掌握资源在Unity中的 ...
- 安卓,通过本地应用分享到微信、facebook等
别的不说了,直接上代码. 支持分享到微信.微博.facebook.twitter package com.example.shareSample; import java.util.List; imp ...
- hdu1824-Let's go home:图论2-SAT
关键在于找出一定矛盾的条件,设一队的3个人为(a,b,c),a为队长,那么(a不留下,b不留下)矛盾,(a不留下,c不留下)矛盾; 对于每一对队员,(a留下,b留下)矛盾. 把模型建好,剩下的就是套模 ...