一. 创建不可变字典的方式:

//字典的字面量,前key后value

NSDictionary *dic =@{@"1":@"2",@"3":@"4"};

NSDictionary *dic = [[NSDictionaryalloc]init];

NSDictionary *dic = [NSDictionary dictionary];

NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",nil];

NSLog(@"%@",dic);

// Key 是唯一的,可是Value是能够反复的

// key 不能为空.

二. 不可变字典的属性与方法:

//1.属性:有多少键值对 -- count:

NSLog(@"%ld",dic.count);

// 2. objectForKey --
依据Key找value:

NSLog(@"%@",[dic objectForKey:@"2"]);

NSLog(@"%@",dic[@"2"]);

//3. 获取全部的key和value --

NSLog(@"%@",dic.allKeys);

NSLog(@"%@",dic.allValues);

三. 创建可变字典的方式:

NSMutableDictionary *dic = [NSMutableDictionarydictionaryWithObjectsAndKeys:@"1",@"2",@"3",@"4",@"5",@"6",nil];

//
遍历字典.

打出全部Vaule

for (NSInteger i =
; i < dic.allKeys.count; i++) {

NSLog(@"%@",dic.allValues[i]);

}

for (NSString *str
in dic) {

NSLog(@"%@",str);//
打出字典的Key.

NSLog(@"%@",dic[str]);//打出Vaule.

}

四.可变字典的属性与方法:

NSMutableDictionary *dic1 = [[NSMutableDictionaryalloc]initWithObjectsAndKeys:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",nil];

//1.可变键值对加入(当key不存在时就进行加入,当key存在时,就进行vaule值的改动.)
-- setObject forKey:

[dic1setObject:@"10"forKey:@"11"];

NSLog(@"%@\n",dic1);

[dic1setObject:@"1000"forKey:@"11"];

NSLog(@"%@",dic1);

//2. 移除键值对

[dic1 removeObjectForKey:@"8"];

NSLog(@"%@",dic1);

//3. 所有移除

[dic1 removeAllObjects];

NSLog(@"%@",dic1);

//4. setObject
是字典自己方法,setVaule是KVC的方法,即使效果一样,但以后对字典进行操作还用setObject.

[dic1setValue:@"100"forKey:@"10"];

五.字典与数组的嵌套:

//1. 字典里对象是数组.

NSArray *arr1 =
@[@"1",@"2",@"3",@"4"];

NSArray *arr2 =
@[@"5",@"6",@"7",@"8"];

NSMutableDictionary *dic = [NSMutableDictionarydictionaryWithObjectsAndKeys:arr1,@"arr1",arr2,@"arr2",nil];

//
遍历.

for (NSString *keyin dic) {

//
针对相应的key 找到vaule,vaule是一个数组,所以用一个数组对象来接受.

NSLog(@"%@",key);

NSArray *arr = dic[key];

for (NSString *vaulein arr) {

NSLog(@"%@",vaule);

}

}


//2. 数组里对象是字典.

NSDictionary *dic1 = [NSDictionarydictionaryWithObjectsAndKeys:@"杨林",@"name",@"19",@"age",nil];

NSDictionary *dic2 = [NSDictionarydictionaryWithObjectsAndKeys:@"刘鑫狗",@"name",@"20",@"age",nil];

NSDictionary *dic3 = [NSDictionarydictionaryWithObjectsAndKeys:@"刘伊茹",@"name",@"0",@"age",nil];

NSArray *arr =
@[dic1,dic2,dic3];

for (NSDictionary *dicin arr) {

for (NSString *keyin dic) {

NSLog(@"%@",dic[key]);

}

}

六.三层嵌套的练习:

NSDictionary *dic1 = [NSDictionarydictionaryWithObjectsAndKeys:@"杨林",@"name",@"19",@"age",nil];

NSDictionary *dic2 = [NSDictionarydictionaryWithObjectsAndKeys:@"刘鑫狗",@"name",@"20",@"age",nil];

NSDictionary *dic3 = [NSDictionarydictionaryWithObjectsAndKeys:@"刘伊茹",@"name",@"0",@"age",nil];

NSArray *arr1 =
@[dic1,dic2];

NSArray *arr2 =
@[dic3];

NSDictionary *Bdic = [NSDictionarydictionaryWithObjectsAndKeys:arr1,@"arr1",arr2,@"arr2",nil];

for (NSString *keyBin Bdic) {

NSArray *arr =Bdic[keyB];

for (NSDictionary *sdicin arr) {

for (NSString *keyin sdic) {

NSLog(@"%@",sdic[key]);

}

}

}


OC06 -- 字典的更多相关文章

  1. 【DG】Oracle_Data_Guard官方直译

    [DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍   Oracle Data Guard概念和管理10g版本2   Oracle Data Guard ...

  2. DVWA实验之Brute Force(暴力破解)- Low

    DVWA实验之Brute Force-暴力破解- Low     这里开始DVWA的相关实验~   有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...

  3. Oracle错误览表

    Oracle 错误总结及问题解决 ORA     本文转自:https://www.cnblogs.com/zhangwei595806165/p/4972016.html  作者@承影剑 ORA-0 ...

  4. Javacript实现字典结构

    字典是一种用[键,值]形式存储元素的数据结构.也称作映射,ECMAScript6中,原生用Map实现了字典结构. 下面代码是尝试用JS的Object对象来模拟实现一个字典结构. <script& ...

  5. python 数据类型 ----字典

    字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...

  6. 增强版字典DictionaryEx

    代码 public class DictionaryEx<TKey, TValue> : IDictionary<TKey, TValue> { /// <summary ...

  7. python学习笔记(字符串操作、字典操作、三级菜单实例)

    字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...

  8. python之最强王者(8)——字典(dictionary)

    1.Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包 ...

  9. python序列,字典备忘

    初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...

随机推荐

  1. ANDROID打包错误ERROR:EXECUTION FAILED FOR TASK ´:APP:LINTVITALRELEASE´.

    来自:http://dditblog.com/itshare_657.html 今天修改之前的项目之后.准备打包的时候.一起打包不了.一直提示有问题.错误是一些什么Strings.xml里面的一些信息 ...

  2. 利用StringUtils工具类进行String为空的判断

      利用工具类进行String类型数据的非空判断,让自己的项目代码变得更加的简洁明了.   判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0   下面是 St ...

  3. Python学习(六)模块 —— 标准模块

    Python 标准模块 Python 带有一个标准模块库,并发布有独立的文档(库参考手册).对于程序员而言,标准库与语言本身同样重要,它好比一个百宝箱,能为各种常见的任务提供完美的解决方案. 这边简单 ...

  4. ThreadLocal实现session中用户信息 的线程间共享

    转载自:http://blog.sina.com.cn/s/blog_4b5bc01101013gok.html ThreadLocal并不难理解,我总结的最简单的理解就是: ThreadLocal像 ...

  5. iOS: 首次使用App时,显示半透明新手指引

    在很多的app,我们都会发现这样一个功能:就是app启动后进入主界面时,会有一个半透明的指引图,它会提示用户如何一步步进行操作,快速的熟悉app的使用规则,极大地方便了用户的使用,也加快了app的推广 ...

  6. iOS:切换视图的第三种方式:UITabBarController标签栏控制器

    UITabBarController:标签栏控制器 •通过设置viewControllers属性或者addChildViewController方法可以添加子控制器 –NSArray *viewCon ...

  7. [Todo]对于thrift和protobuf比较好的描述

    比较跨语言通讯框架:thrift和Protobuf 全部thrift protobuf 前两天想在微博上发表一个观点:在现在的技术体系中,能用于描述通讯协议的方式很多,xml,json,protobu ...

  8. 常见文本框提示css技巧

    很多时候会碰到那个的表单 一般我们做文字提醒功能时会在value处直接写上,现在总结一个比较好的方法直接上代码: html: <dl class="login_from"&g ...

  9. Windows Xp不用安装软件管理多个远程桌面连接

    一直使用系统默认的Mstsc来进行远程连接,但如果要连接N个远程的话就比较麻烦 之前也找过第三方的管理软件如:mRemoteNG 此软件有优点就不说了,但我在使用此软件时有一个很大的问题,就是如果一个 ...

  10. 【树莓派】树莓派raspi-config配置

    发现有些树莓派盒子,输入的结果和键盘的实际字符有差异,比如输入 | ,结果显示为 ~. 这是因为树莓派的键盘设置问题. 可以通过设置raspi-config进行配置: 第一次使用树莓派的时候需要进行一 ...