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

1.不可变字典

1.1创建不可变字典

  1. //创建字典
  2. //注意:
  3. //1,元素个数是偶数
  4. //2,每两个元素是一个键值对
  5. //3,值在前,键在后
  6. NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"huang",@"name",@"",@"age", nil];
  7. NSLog(@"%@",dic);
  8.  
  9. //用一个字典来创建另外一个字典
  10. NSDictionary *dic2 = [[NSDictionary alloc] initWithDictionary:dic];
  11.  
  12. //注意:
  13. //1,value和key的个数要相同
  14. //2,values和keys里面的元素的先后顺序要对应
  15. NSDictionary *dic3 = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:@"huang",@"", nil] forKeys:[NSArray arrayWithObjects:@"name",@"age", nil]];
  16. NSLog(@"%@",dic3);
  17.  
  18. //创建数组的新方式
  19. NSArray *arr = @[@"",@"",@""];
  20. NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:@"",@"age",@"huang",@"name", nil];
  21. NSDictionary *dic5 = [NSDictionary dictionaryWithDictionary:dic4];
  22. NSDictionary *dic6 = [NSDictionary dictionaryWithObjects:@[@"huang",@""] forKeys:@[@"name",@"age"]];
  23. //创建字典的新方式
  24. NSDictionary *dic7 = @{@"name": @"huang",@"age":@""};

1.2不可变字典的常用操作

  1. //字典的常用操作
  2. NSInteger count = [dic7 count];
  3. NSLog(@"%ld",count);
  4.  
  5. //根据键去获取值
  6. NSString *str = [dic7 valueForKey:@"name"];
  7. NSLog(@"%@",str);
  8.  
  9. //获取所有的key
  10. NSArray *allKeys = [dic7 allKeys];
  11. NSLog(@"%@",allKeys);
  12.  
  13. //获取所有的value
  14. NSArray *allValues = [dic7 allValues];
  15.  
  16. //获取一个value对应的key
  17. NSDictionary *dic8 = @{@"name":@"huang",@"age":@"",@"score":@""};
  18. NSArray *arr1 = [dic8 allKeysForObject:@""];
  19. NSLog(@"%@",arr1);
  20.  
  21. NSDictionary *dic9 = @{@"dic8":dic8,@"dic7":dic7};
  22. NSLog(@"%@",dic9);
  23.  
  24. //数组与字典的嵌套
  25. NSArray *array1 = @[@"",@"",@""];
  26. NSDictionary *dictionary1 = @{@"name":@"xiaoming",@"age":@""};
  27.  
  28. NSDictionary *dictionary2 = @{@"array":array1,@"dictionary":dictionary1};
  29. NSLog(@"%@",dictionary2);
  30.  
  31. NSArray *array2 = @[array1,dictionary1];
  32. NSLog(@"%@",array2);
  33.  
  34. //字典的遍历
  35. NSDictionary *dictionary3 = @{@"name":@"huang",@"age":@"",@"number":@""};
  36. NSArray *allKeys1 = [dictionary3 allKeys];
  37. for(NSString *key in allKeys1)
  38. {
  39. NSString *str = [dictionary3 objectForKey:key];
  40. NSLog(@"%@=%@",key,str);
  41. }

2.可变字典

2.1可变字典的创建与使用

  1. NSDictionary *dic = @{@"name":@"xiaoming",@"age":@""};
  2. NSDictionary *dic1 = @{@"age":@"",@"score":@""};
  3.  
  4. NSMutableDictionary *muDic = [[NSMutableDictionary alloc] init];
  5.  
  6. //从一个字典内添加元素到可变字典
  7. //注意:
  8. //当dic与可变字典有相同的key时,不添加这个key,但是会将key对应的value覆盖。
  9. [muDic addEntriesFromDictionary:dic];
  10. NSLog(@"%@",muDic);
  11. [muDic addEntriesFromDictionary:dic1];
  12. NSLog(@"%@",muDic);
  13.  
  14. //添加一个元素
  15. //注意:
  16. //1,setObject:forKey: 当key不存在时就是添加元素,当key存在时就是修改元素值
  17. [muDic setObject:@"mingming" forKey:@"nickname"];
  18. [muDic setObject:@"xiaohua" forKey:@"name"];
  19. NSLog(@"%@",muDic);
  20.  
  21. //删除一个元素
  22. [muDic removeObjectForKey:@"name"];
  23. NSLog(@"%@",muDic);
  24.  
  25. //删除一个keys数组里面对应的所有元素
  26. [muDic removeObjectsForKeys:@[@"nickname",@"aaa"]];
  27. NSLog(@"%@",muDic);
  28.  
  29. //删除字典内的所有元素
  30. [muDic removeAllObjects];
  31. NSLog(@"%@",muDic);
  32.  
  33. //修改字典
  34. [muDic setDictionary:dic];
  35. NSLog(@"%@",muDic);

OC基础 可变字典与不可变字典的使用的更多相关文章

  1. Python基础(3)_可变对象与不可变对象、列表、元祖和字典

    可变对象与不可变对象 实例被创建后,身份和类型是不可变的, 如果值是不可以被修改的,则是不可变对象 如果值是可以被修改的,则是可变对象 #在id不动,type也不动,value被修改了,则称为可变 # ...

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

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

  3. OC基础 可变数组与不可变数组的使用

    OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...

  4. oc基础 不可变字符串的创建和使用

    oc基础  不可变字符串的创建和使用 简介:下面都是字符串基本用法. 1.字符串的创建 //创建oc常量字符串 NSString *str=@"hello world!"; NSL ...

  5. python基础3(元祖、字典、深浅copy、集合、文件处理)

    本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...

  6. Python基础5:列表 元祖 字典 集合

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  7. python基础之可变数据类型与不可变数据类型

    一.什么可变数据类型和不可变数据类型 可变数据类型:value值改变,id值不变:不可变数据类型:value值改变,id值也随之改变. 二.如何确定一种数据类型是可变的还是不可变的 根据可变数据类型与 ...

  8. Python基础5:列表 元祖 字典 集合 Json

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  9. Python基础知识-05-数据类型总结字典

    python其他知识目录 1.一道题,选择商品的序号.程序员和用户各自面对的序号起始值 如有变量 googs = ['汽车','飞机','火箭'] 提示用户可供选择的商品: 0,汽车1,飞机2,火箭用 ...

随机推荐

  1. dinic网络流模板

    src:源点 sink:汇点 #include<queue> #include<iostream> #include<string.h> #include<s ...

  2. h5connect.js 腾讯云视频点播使用指南

    http://video.qcloud.com/download/docs/QVOD_Player_Web_SDK_Developer_Guide.pdf 腾讯云视频点播服务 Web播放器SDK开发指 ...

  3. javascript字符类型操作函数

    //获取字符串的长度 String.prototype.getByteLength = function() { var bytes=0,i=0; for (; i<this.length; + ...

  4. python学习第十八天 --错误&异常处理

    这一章节主要讲解python的错误和异常处理 什么是错误和异常?及其区别? 错误: 1.语法错误:代码不符合解释器或者编译器语法. 2.逻辑错误:不完整或者不合法输入或者计算出现问题.   异常:执行 ...

  5. How many ways??(HDU 2157)

    How many ways?? Sample Input 4 4 //n个点,m条路径0 1 //s->t可通0 21 32 32 //询问数0 3 2 //从0到3走两条路可到的方案有多少种0 ...

  6. code first 尝试

    建表: 1.先用EF连接数据库,配置connectionStrings <configSections> <!-- For more information on Entity Fr ...

  7. HTML5面试题-备

    万不可投机取巧.只求当时过关,非长久之计也!(感谢大神分享) 面试有几点需要注意: 面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑. 题目类型: 技术视野.项目细节.理论知 ...

  8. C语言中如何获得文件大小

    方法一: 获得文件大小需要用到2个函数:fseek() , ftell() fseek()函数: 原型:intfseek(FILE *stream, long offset, int fromwher ...

  9. 这样就算会了PHP么?-3

    关于循环,IF,WHILE.... <?php $month = date("n"); $today = date("j"); if ($today &g ...

  10. Codeforces 161D Distance in Tree

    题目大意:给出一棵n个节点的树,统计树中长度为k的路径的条数(1<=n<=50000 , 1<=k<=500) 思路:树分治! #include<cstdio> # ...