OC基础 可变字典与不可变字典的使用
OC基础 可变字典与不可变字典的使用
1.不可变字典
1.1创建不可变字典
//创建字典
//注意:
//1,元素个数是偶数
//2,每两个元素是一个键值对
//3,值在前,键在后
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"huang",@"name",@"",@"age", nil];
NSLog(@"%@",dic); //用一个字典来创建另外一个字典
NSDictionary *dic2 = [[NSDictionary alloc] initWithDictionary:dic]; //注意:
//1,value和key的个数要相同
//2,values和keys里面的元素的先后顺序要对应
NSDictionary *dic3 = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:@"huang",@"", nil] forKeys:[NSArray arrayWithObjects:@"name",@"age", nil]];
NSLog(@"%@",dic3); //创建数组的新方式
NSArray *arr = @[@"",@"",@""];
NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:@"",@"age",@"huang",@"name", nil];
NSDictionary *dic5 = [NSDictionary dictionaryWithDictionary:dic4];
NSDictionary *dic6 = [NSDictionary dictionaryWithObjects:@[@"huang",@""] forKeys:@[@"name",@"age"]];
//创建字典的新方式
NSDictionary *dic7 = @{@"name": @"huang",@"age":@""};
1.2不可变字典的常用操作
//字典的常用操作
NSInteger count = [dic7 count];
NSLog(@"%ld",count); //根据键去获取值
NSString *str = [dic7 valueForKey:@"name"];
NSLog(@"%@",str); //获取所有的key
NSArray *allKeys = [dic7 allKeys];
NSLog(@"%@",allKeys); //获取所有的value
NSArray *allValues = [dic7 allValues]; //获取一个value对应的key
NSDictionary *dic8 = @{@"name":@"huang",@"age":@"",@"score":@""};
NSArray *arr1 = [dic8 allKeysForObject:@""];
NSLog(@"%@",arr1); NSDictionary *dic9 = @{@"dic8":dic8,@"dic7":dic7};
NSLog(@"%@",dic9); //数组与字典的嵌套
NSArray *array1 = @[@"",@"",@""];
NSDictionary *dictionary1 = @{@"name":@"xiaoming",@"age":@""}; NSDictionary *dictionary2 = @{@"array":array1,@"dictionary":dictionary1};
NSLog(@"%@",dictionary2); NSArray *array2 = @[array1,dictionary1];
NSLog(@"%@",array2); //字典的遍历
NSDictionary *dictionary3 = @{@"name":@"huang",@"age":@"",@"number":@""};
NSArray *allKeys1 = [dictionary3 allKeys];
for(NSString *key in allKeys1)
{
NSString *str = [dictionary3 objectForKey:key];
NSLog(@"%@=%@",key,str);
}
2.可变字典
2.1可变字典的创建与使用
NSDictionary *dic = @{@"name":@"xiaoming",@"age":@""};
NSDictionary *dic1 = @{@"age":@"",@"score":@""};
NSMutableDictionary *muDic = [[NSMutableDictionary alloc] init];
//从一个字典内添加元素到可变字典
//注意:
//当dic与可变字典有相同的key时,不添加这个key,但是会将key对应的value覆盖。
[muDic addEntriesFromDictionary:dic];
NSLog(@"%@",muDic);
[muDic addEntriesFromDictionary:dic1];
NSLog(@"%@",muDic);
//添加一个元素
//注意:
//1,setObject:forKey: 当key不存在时就是添加元素,当key存在时就是修改元素值
[muDic setObject:@"mingming" forKey:@"nickname"];
[muDic setObject:@"xiaohua" forKey:@"name"];
NSLog(@"%@",muDic);
//删除一个元素
[muDic removeObjectForKey:@"name"];
NSLog(@"%@",muDic);
//删除一个keys数组里面对应的所有元素
[muDic removeObjectsForKeys:@[@"nickname",@"aaa"]];
NSLog(@"%@",muDic);
//删除字典内的所有元素
[muDic removeAllObjects];
NSLog(@"%@",muDic);
//修改字典
[muDic setDictionary:dic];
NSLog(@"%@",muDic);
OC基础 可变字典与不可变字典的使用的更多相关文章
- Python基础(3)_可变对象与不可变对象、列表、元祖和字典
可变对象与不可变对象 实例被创建后,身份和类型是不可变的, 如果值是不可以被修改的,则是不可变对象 如果值是可以被修改的,则是可变对象 #在id不动,type也不动,value被修改了,则称为可变 # ...
- OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏
==============NSArray(不可变数组)=========== NSArray,继承自NSObject 用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray ...
- OC基础 可变数组与不可变数组的使用
OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...
- oc基础 不可变字符串的创建和使用
oc基础 不可变字符串的创建和使用 简介:下面都是字符串基本用法. 1.字符串的创建 //创建oc常量字符串 NSString *str=@"hello world!"; NSL ...
- python基础3(元祖、字典、深浅copy、集合、文件处理)
本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...
- Python基础5:列表 元祖 字典 集合
[ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...
- python基础之可变数据类型与不可变数据类型
一.什么可变数据类型和不可变数据类型 可变数据类型:value值改变,id值不变:不可变数据类型:value值改变,id值也随之改变. 二.如何确定一种数据类型是可变的还是不可变的 根据可变数据类型与 ...
- Python基础5:列表 元祖 字典 集合 Json
[ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...
- Python基础知识-05-数据类型总结字典
python其他知识目录 1.一道题,选择商品的序号.程序员和用户各自面对的序号起始值 如有变量 googs = ['汽车','飞机','火箭'] 提示用户可供选择的商品: 0,汽车1,飞机2,火箭用 ...
随机推荐
- C#操作EXCEL的时候出现“ 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application” ”问题
总是报出这个错误,准备放弃COM的组件转投NPOI,后来想起在装这个操作系统的时候,自带装过WPS,后来使用360卸载了.于是想着试一试的心态,重新安装了WPS,结果,问题解决了.你懂的.
- MVC上传相关
1.上传大小设置 system.web节点,httpruntime节点加入maxRequestLength="4096",以K为单位,例子中大小限制为4M. 2.form提交htm ...
- [目录][Leetcode] Leetcode 题解索引
之前想边做题边写结题报告,发现有点力不从心,而且很多地方也是一知半解,现在重新做题,重新理解.这篇文章主要起一个目录的作用. 目前没有什么特定的顺序,基本都是看心情翻牌的,哈哈~ 我在Github上新 ...
- IE6双倍margin间距解决方法
虽然现在很少有人在用ie6了,但作为前端人员,是不的不面对的问题. 在ie6中,使用float后的元素,在margin—left,这是你会发现距离和你想的不一样,其他的浏览器又是正常的,增大margi ...
- linux中screen命令的用法
http://www.9usb.net/201002/linux-screen-mingling.html 作为linux服务器管理员,经常要使用ssh登陆到远程linux机器上做一些耗时的操作.也许 ...
- vmware workstation 10.0.1 install mac os mavericks
由于项目当中有ios app开发,第一感觉就是mac开发环境会比较适合开发与调试(虽然linux.windows都有相应的oc开发环境). 由于我是用windows7搞.net开发的,所以其他系统接触 ...
- Codeforces 4D Mysterious Present
http://codeforces.com/contest/4/problem/D 题目大意: 给出n个信封,这n个信封有长和宽,给出卡片的尺寸,求取能够装入卡片的最长的序列,序列满足后一个的长和宽一 ...
- 如何解决Bluetooth系统设计的棘手问题
我们若想设计一套完善的蓝牙 (Bluetooth) 系统,就必须充分掌握其中的技术知识,例如协议堆栈.射频设计及系统集成等方面的专门知识.LMX9820 芯片的面世令蓝牙系统的设计工作变得更为容易.以 ...
- 常用的Windows批处理
切换执行路径 如果不换盘的话:cd xxx换盘:cd /d xxx 获取当前日期 编写Windows批处理时经常会需要使用到日期和时间作为文件名,所以是非常重要的. 如何获取日期呢?格式: ...
- 【Xamarin-IOS 开发环境搭建】
MAC 比较贵,虚拟机的干活..... 配置完虚拟机.进去后 ,安装XCode的 时候 ,失败了.错误信息: But when i have tried to install the Xcode it ...