字典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语言 开发的朋友应该很清楚 关键 ...
随机推荐
- Java面向对象内存图
1. java虚拟机的内存划分 2. 苹果手机类 package cn.itcast.day06.demo02; /* 定义一个类,用来模拟“手机”事物. 属性:品牌.价格.颜色 行为:打电话.发短信 ...
- 计算机二级-C语言-程序设计题-190119记录-求出一个二维数组每一列的最小值。
//编写一个函数:tt指向一个M行N列的二维数组,求出二维数组每列中最小的元素,并依次放入pp所指的一维数组中.二维数组中的数在主函数中赋予. //重难点:求出的是每一列的最小值,这里要注意,学会简化 ...
- 「CF859E」Desk Disorder
传送门 Luogu 解题思路 一眼想到二分图:但是求不了最大匹配方案数 oho. 于是考虑这么建图: 直接将一个人可以去的两把椅子连边,然后原图中的2n个点就会形成许多联通块,这个可以分步计数. 又因 ...
- lsof 查看打开了一个文件的有哪些进程 统计那个进程打开的文件最多
lsof | grep /lib64/libc-2.12.so | wc == 查看打开了一个文件的有哪些进程 lsof | awk '{print $2,$1}' | sort | uniq - ...
- GIT 协同开发
Git 是一个开源的分布式版本控制系统,用于敏捷高效的处理任何项目的版本问题.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.与cvs, ...
- c# 调用c++sdk时结构体与byte数组互转
/// <summary> /// 由结构体转换为byte数组 /// </summary> public static byte[] StructureToByte<T ...
- 20141110的alltosun面试
今天周一,是校招的第一天,心情有点紧张,不过可以和很多同学一起去,是我紧张的心情变得稍微安静些.面试进行的时候,是学长2哥面的我,总体感觉自己的表现很糟糕,在公共场合发表言论或者演讲,一直是我的一个弱 ...
- Educational Codeforces Round 82 B. National Project
Your company was appointed to lay new asphalt on the highway of length nn. You know that every day y ...
- ajax相同url和参数,将不会重复发起请求
IE浏览器下使用GET发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容. 解决办法: 一. GET请求URL后加随机 ...
- a标签中执行js函数
在a标签中调用js函数最适当的方法推荐使用: 1.a href="javascript:void(0);" onclick="js_method()" 这种方法 ...