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.补充 ...
随机推荐
- cocos2dx 动画 二(iOS)
7.Bezier曲线 需要ccBezierConfig结构体,设置2个控制点和一个结束点 ccBezierConfig bc; bc.controlPoint_1 = Vec2(,); bc.cont ...
- angularjs使用ng-messages的注册表单实例
<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <me ...
- 小巧实用的数字加减插件(jquery插件)
2015-12-04 近期项目需要,我将插件更新了,增加了两个参数,一个参数控制文本框是否支持输入,另一个参数则是新增了一个回调函数,返回文本框内的值.另外对代码局部重构了,优化了一下封装,需要的朋友 ...
- ECSTORE 新建APP应用
1.用命令新建app // ----- window平台 ----- 直接运行 " 站点根目录/app/base/cmd.bat " 出现命令行后输入 dev:new app my ...
- 使用PowerDesigner 15对现有数据库进行反向工程(图解教程)
1.启动PD 2.菜单:File->Reverse Engineer ->Database 出来New Physical Data Model对话框 点击“确定”按钮,弹出Database ...
- matlab的绘图保存
matlab的绘图和可视化能力是不用多说的,可以说在业内是家喻户晓的.Matlab提供了丰富的绘图函数,比如ez**系类的简易绘图函数,surf.mesh系类的数值绘图函数等几十个.另外其他专业工 ...
- linux 搭建lamp环境
sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql sudo chmod 777 /var/w ...
- Android开发的体会
View Functionality--------------->逻辑 Data----------------------->实体,包括从View.Net.其他对象比如Location ...
- NGINX小技巧--将所有目录和目录下所有文件分别给与不同的权限
为了安全,有时要将文件的权限进行限制,但,目录如果没有755,则不能进入. 所以需要分别给权限 find ./ -type f -name "*" |xargs ls -l
- [置顶] tar命令-linux
tar命令 先对文件进行打包,然后进行压缩. [.tar..gz..tar.gz..tgz..bz2..tar.bz2..Z..tar.Z..zip..rar] [主要讲tar,其他还有zip/unz ...