字典NSDictionary和NSMutableDictionary的使用
简介:字典是一种数据结构,字典里面的每一个元素,是一个key-value(键值对),key和value都是对象类型。同NSArray一样,里面的对象不用保持一致性。
NSDictionary
1、字面量初始化
// 存储时时无序的
NSDictionary *dict = @{@"name" : @"xiaoming", @"gendar" : @"man", @"age" : @""};
// 打印时根据Unicode码排序打印
NSLog(@"%@", dict);
2、实例方法初始化
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"", @"age", @"man", @"gendar", @"xiaoming", @"name", nil];
3、类方法初始化
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"", @"age", @"man", @"gendar", @"xiaoming", @"name", nil];
4、打印key-value的对数
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"", @"age", @"man", @"gendar", @"xiaoming", @"name", nil];
NSLog(@"%@", dict.count);
注意:key-value键值对中的key具有唯一性,value可以相同。也就是说,栗子如下:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"", @"age", @"man", @"gendar", @"xiaoming", @"name", @"woman", @"gendar", nil];
NSLog(@"%@", dict);
====打印
{
age = ;
gendar = man;
name = xiaoming;
}
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"", @"age", @"man", @"gendar", @"xiaoming", @"name", @"man", @"lastGendar", nil];
NSLog(@"%@", dict);
====打印
{
age = ;
gendar = man;
lastGendar = man;
name = xiaoming;
}
5、根据key取出相应的value
NSDictionary *dict = @{@"name" : @"xiaoming", @"gendar" : @"man", @"age" : @""};
// valueForKey是NSDictionary的分类中的一个方法
NSString *nameString = [dict valueForKey:@"name"];
// objectForKey是NSDictionary本身定义的一个方法
NSString *ageString = [dict objectForKey:@"age"];
// 根据下标符取出value
NSString *gendarString = dict[@"gendar"];
NSLog(@"~~~~~~~~~~%@~~~~~~~~~~%@~~~~~~~~~~%@", nameString, ageString, gendarString);
====打印
~~~~~~~~~~xiaoming~~~~~~~~~~~~~~~~~~~~man
6、取出字典中所有的key、所有的value
NSDictionary *dict = @{@"name" : @"xiaoming", @"gendar" : @"man", @"age" : @""};
NSArray *keyArray = [dict allKeys];
NSArray *valueArray = [dict allValues];
NSLog(@"\n%@\n%@", keyArray, valueArray);
====打印
(
name,
gendar,
age
)
(
xiaoming,
man,
)
7、判断两个字典对象是否相同
NSDictionary *dict1 = @{@"name" : @"小明", @"gendar" : @"男", @"age" : @""};
NSDictionary *dict2 = @{@"name" : @"小红", @"gendar" : @"男", @"age" : @""};
BOOL bo = [dict1 isEqualToDictionary:dict2];
NSLog(@"%@", bo ? @"两者相同" : @"两者不相同");
====打印
两者不相同
NSMutableDictionary
1、构建方法初始化
NSMutableDictionary *mDict = [[NSMutableDictionary alloc] init];
2、类方法初始化
NSMutableDictionary *mDict = [NSMutableDictionary dictionary];
3、根据key值修改对应的value(找不到对应的key,就相当于添加这一对key-value)
NSMutableDictionary *mDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"", @"age", @"man", @"gendar", @"xiaoming", @"name", @"woman",
@"gendar", nil];
[mDict setObject:@"" forKey:@"age"];
[mDict setObject:@"China" forKey:@"address"];
NSLog(@"%@", mDict);
====打印
{
address = China;
age = ;
gendar = woman;
name = xiaoming;
}
4、根据key删除key-value键值对
NSMutableDictionary *mDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"", @"age", @"man", @"gendar", @"xiaoming", @"name", @"woman",
@"gendar", nil];
[mDict removeObjectForKey:@"name"];
NSLog(@"%@", mDict);
====打印
{
age = ;
gendar = woman;
}
5、使用一个字典重置可变字典
NSMutableDictionary *dict1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"", @"age", @"man", @"gendar", nil];
NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"", @"age", @"woman", @"gendar", nil];
[dict2 setDictionary:dict1];
NSLog(@"%@", dict2);
====打印
{
age = ;
gendar = man;
}
----暂时这么多
字典NSDictionary和NSMutableDictionary的使用的更多相关文章
- 字典NSDictionary以及NSMutableDictionary的用法总结
做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...
- IOS字典NSDictionary与NSMutableDictionary知识点
字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速 ...
- Foundation框架--字典( NSDictionary NSMutableDictionary )
基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...
- iOS常用 --- NSDictionary 与 NSMutableDictionary
一.NSDictionary 字典的两种创建方法 NSDictionary *dic1 =[[NSDictionary alloc]init]; 2 // 或: 3 NSDictionary *dic ...
- 黑马程序员-NSDictionary和NSMutableDictionary
NSDictionary和NSMutableDictionary:通过key和value进行对应,进行存储元素,能够方便提取所需的元素.key是不能够重复出现,但是value能够重复出现.NSDict ...
- OC中的字典NSDictionary
========================== 字典 ========================== NSDictionary * dict = [[NSDictionary alloc] ...
- NSDictionary、NSMutableDictionary及其枚举器的用法
.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberWithInt:]; 以一个元素初始化 NSDictionary *dic = ...
- NSDictionary、NSMutableDictionary的基本用法
NSDictionary.NSMutableDictionary的基本用法 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberW ...
- (转载)目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结
文章转载自:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键 ...
随机推荐
- Jmeter_正则表达式提取器_提取数组 & For Each 控制器
1.举例: https://demodaojia.ecjia.com/ 提取黄色标注的这些内容 2. 3. 匹配数字:-1 表示匹配全部,0表示随机一个 4. 5.我们获取了10组数据,通过正则提取器 ...
- dp(出国简历)
Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了.要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的.Speakless没有 ...
- codeforces Beautiful Numbers
来源:http://codeforces.com/problemset/problem/1265/B B. Beautiful Numbers You are given a permutat ...
- Hack the box邀请码和注册问题总结
注意下,有3个坑, 1. 解码方式是随机的,记得看DATA下面提示用哪种 2. post时候可以直接用f12里的console,命令是: $.post('https://www.hackthebox. ...
- 区块链学习——HyperLedger-Fabric v1.0 启动过程分析
本章我们从fabric v1.0的e2e_cli示例开始分析整个启动过程以及在过程中的一些配置文件 首先呢,还是确保你的基本环境已经搭建完成,v1.0源码和镜像也都下载完毕 fabric启动过程中的相 ...
- Fluent_Python_Part3函数即对象,07-closure-decoration,闭包与装饰器
第7章 函数装饰器和闭包 装饰器用于在源码中"标记"函数,动态地增强函数的行为. 了解装饰器前提是理解闭包. 闭包除了在装饰器中有用以外,还是回调式编程和函数式编程风格的基础. 1 ...
- A Kill Cord for your Laptop
前言 昨晚在朋友圈看到国外一篇文章利用U盘锁笔记本电脑,刚好有一个坏的金士顿U盘,所以就折腾了一下. 准备 USB设备*1 Arch系统*1 走过的坑 因为systemd-udevd带起来的进程是ro ...
- 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!
转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...
- Asteroids!_poj2225
这是一个立方体的空间的路径搜索问题,若可达输出步数,不可达输出“NO ROUTE” 一道……课后题 输入的话我是按字符输入这个空间的 然后普通的bfs,一个方向数组,一个空间数组(因为只用一次,懒的再 ...
- 如何安装部署和优化Tomcat?(Tomcat部署和优化与压测,虚拟主机配置,Tomcat处理请求的过程)
文章目录 前言 一:Tomcat安装部署 1.1:Tomcat简介 1.2:Tomcat核心组件 1.3:Tomcat处理请求的过程 1.3.1:请求过程基本解释 1.3.2:请求过程详细解释 1.4 ...