字典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语言 开发的朋友应该很清楚 关键 ...
随机推荐
- hadoop中block副本的放置策略
下面的这种是针对于塔式服务器的副本的放置策略
- 如何在应用程序中使用ML.NET?
https://www.cnblogs.com/shanyou/p/9190701.html ML.NET以NuGet包的形式提供,可以轻松安装到新的或现有的.NET应用程序中. 该框架采用了用于其他 ...
- sort的使用
sort主要是用来排序的,可以用自定义的函数进行比较,也可以用系统的4中函数进行比较,即less(),greater(),less_equal(),greater_equal().但是我试了一下,发现 ...
- 【安全运维】Vim的基本操作
i 插入模式 : 末行模式 a 光标后插入 A 切换行末 I 切换行首 o 换行 O 上一行 p 粘贴 u 撤销 yy 复制 4yy 复制四行 dd (剪切)删除一行 2dd (剪切)删除两行 D 剪 ...
- Spring Boot Web 开发@Controller @RestController 使用教程
在 Spring Boot 中,@Controller 注解是专门用于处理 Http 请求处理的,是以 MVC 为核心的设计思想的控制层.@RestController 则是 @Controller ...
- Vue父组件主动获取子组件的数据和方法
Vue父组件主动获取子组件的数据和方法 https://www.jianshu.com/p/bf88fc809131
- Codeforces Round #593 (Div. 2)D(螺旋形模拟)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;vector<int>po[100 ...
- nyoj 100
怒刷水题... AC代码: #include <stdio.h> int main() { int x,t,count; scanf("%d",&t); whi ...
- pexpect &&pxssh
python 3.6 pip install pexpect #!/usr/bin/python3 import os import sys curPath = os.path.abspath(os ...
- [idea] 解决 idea 复制进项目的文件运行时无法找到的问题
解决方法一: Rebuild后,重启项目 解决方法二: