简介:字典是一种数据结构,字典里面的每一个元素,是一个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的使用的更多相关文章

  1. 字典NSDictionary以及NSMutableDictionary的用法总结

    做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...

  2. IOS字典NSDictionary与NSMutableDictionary知识点

    字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速 ...

  3. Foundation框架--字典( NSDictionary NSMutableDictionary )

    基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...

  4. iOS常用 --- NSDictionary 与 NSMutableDictionary

    一.NSDictionary 字典的两种创建方法 NSDictionary *dic1 =[[NSDictionary alloc]init]; 2 // 或: 3 NSDictionary *dic ...

  5. 黑马程序员-NSDictionary和NSMutableDictionary

    NSDictionary和NSMutableDictionary:通过key和value进行对应,进行存储元素,能够方便提取所需的元素.key是不能够重复出现,但是value能够重复出现.NSDict ...

  6. OC中的字典NSDictionary

    ========================== 字典 ========================== NSDictionary * dict = [[NSDictionary alloc] ...

  7. NSDictionary、NSMutableDictionary及其枚举器的用法

    .不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberWithInt:]; 以一个元素初始化 NSDictionary *dic = ...

  8. NSDictionary、NSMutableDictionary的基本用法

    NSDictionary.NSMutableDictionary的基本用法 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberW ...

  9. (转载)目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结

    文章转载自:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键 ...

随机推荐

  1. TensorFlow 模型的保存与载入

    参考学习博客: # https://www.cnblogs.com/felixwang2/p/9190692.html 一.模型保存 # https://www.cnblogs.com/felixwa ...

  2. windows ,linux永久和临时修改pip源

    临时修改(建议)pypi镜像源方法:如果有untrust 报错,可使用https开头的网站,或加上--trusted 例如: pip install pywin32 -i http://mirrors ...

  3. 【原创】Centos配置turn服务器

    使用ssh工具,进入命令行,安装下面的就是可以配置turn-server(coturn) 转请注明出处. 1.安装centos必须的库文件      yum install -y make gcc c ...

  4. Steam 游戏 《Sudoku Universe(数独宇宙)》、《Sudoku Killer(数独杀手)》、《Sudoku Jigsaw(数独拼图)》数字位置解析 ---------C# 数独程序解析(2020年寒假小目标11)

    日期:2020.02.11 博客期:151 星期二 今天,准备肝一个 C# 的数独读写工具(汇编语言也在努力学习命令方法中...),这三个游戏我早就买下了,一直放在 Steam 库里积灰,看着它的成就 ...

  5. notepad++ java编码,输出中文字符时,编译出错

    呆在公司中,最近受开发手机app的几个同事影响,想学android的开发,心血来潮,挡也挡不住,说干就干,直接看教程,发现有很多关于java的语法知识不懂,于是又来学java,学习的过程中难免出现问题 ...

  6. 树莓派Raspberry实践笔记—显示分辨率配置

    转载:http://www.cnblogs.com/atsats/p/6607886.html 如果未接显示设备,使用VNC登录后,显示分辨率很小,应该是480p,导致使用很不方便. 这里通过修改/b ...

  7. Wireless-MCS

    MCS是modulation and coding scheme的缩写,可以翻译为调制和编码格式,我们可以选择配置该参数,来选择AP和Client之间传输的MCS rate,这些数据速率是使用shor ...

  8. C++中的sort函数和⾃定义cmp函数

    写在最前面,本文摘录于柳神笔记: sort 函数在头⽂件 #include ⾥⾯,主要是对⼀个数组进⾏排序( int arr[] 数组或 者 vector 数组都⾏), vector 是容器,要⽤ v ...

  9. codeforces Round #611

    这种凌晨场真的折寿 就过了四题,8wa结尾心态炸裂,求别被hack,再hack就要爬了 A2   B8   C38(1)   E1:58(7) D题感觉可以写,但是没有时间看了.幸好E最后发现了自己的 ...

  10. python 之并发编程更新版进程池与进程池比较与回调函数

    一.更新版进程池与进程池比较 from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor import os, tim ...