NSDictionary/NSMutableDictionary

NSDictionary/NSMutableDictionary 特点:

(1)里存储的东西都是键值对

(2)可以像数组一样快速创建(适用 NSDictionary):@{key1 : value1,

(3)快速访问元素:字典名 [key]

比如可以这样为指定 key 赋值:

dic [@”key1”] = @”value1”;

快速获取 key 所对应的 value:

key2 : value2}

NSString *name = dic[@”name”];//存储的是 String

或者:

NSDictionary *userdic = dic[@”user”];//存储的是 NSDictionary
NSString *name = userdic [@”name”];

(4)字典不允许有相同的 key,但允许有相同的 value(Object)
(5)字典是无序的

1、不可变词典 NSDictionary

字典初始化:

(1)以一个元素初始化

NSDictionary *dic = [NSDictionary dictionaryWithObject:numObj forKey:@"key"];

(2)初始化两个元素

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:

numObj, @"valueKey", numObj2, @"value2",nil];

(3)初始化新字典,新字典包含 otherDic

NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];

(4)以文件内容初始化字典

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

(5)也可创建多维字典

使用快速创建的方式:

NSArray *persons = @[

@{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5 分钟突破 iOS 编程", @"5 分钟

突破 android 编程"]},

@{@"name" : @"rose", @"qq" : @"767567"},
@{@"name" : @"jim", @"qq" : @"423423"},
@{@"name" : @"jake", @"qq" : @"123123213"}

];

访问:

NSLog(@"%@", persons[1][@"qq"]);

上述代码含义:

先取出 1 位置对应的字典
再取出字典中 qq 这个 key 对应的数据
常用方法:

(1)获取字典数量

NSInteger count = [dic count];

(2)通过 key 获取对应的 value 对象

NSObject *valueObj = [dic objectForKey:@"key"];

(3)将字典的 key 转成枚举对象,用于遍历

NSEnumerator *enumerator = [dic keyEnumerator];
(4)获取所有键的集合

NSArray *keys = [dic allKeys];

(5)获取所有值的集合

NSArray *values = [dic allValues];

2、可变数组 NSMutableDictionary

(1)初始化一个空的可变字典

NSMutableDictionary *dic2 = [NSMutableDictionary
dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];

NSDictionary *dic3 = [NSDictionary dictionaryWithObject:
@"v3" forKey:@"key3"];

(2)向字典 2 对象中添加整个字典对象 3

[dic2 addEntriesFromDictionary:dic3];

(3)向字典 2 对象中最佳一个新的 key3 和 value3

[dic2 setValue:@"value3" forKey:@"key3"];
(4)初始化一个空的可变字典

NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
(5)将空字典 1 对象内容设置与字典 2 对象相同

[dic1 setDictionary:dic2];

(6)将字典中 key1 对应的值删除

[dic1 [email protected]"key1"];

NSArray *array = [NSArray arrayWithObjects:@"key1", nil];
(7)根据指定的数组(key)移除字典 1 的内容

[dic2 removeObjectsForKeys:array];
(8)移除字典所有对象

[dic1 removeAllObjects];

3、遍历字典

(1)快速枚举 for (id key in dic){

id obj = [dic objectForKey:key];

NSLog(@"%@", obj); }

(2)一般枚举

NSArray *keys = [dic allKeys];
inr length = [keys count];

for (int i = 0; i < length;i++){

id key = [keys objectAtIndex:i];
id obj = [dic objectForKey:key];
NSLog(@"%@", obj);

}

(3)通过枚举类型枚举

NSEnumerator *enumerator = [dic keyEnumerator];
id key = [enumerator nextObject];

while (key) {

id obj = [dic objectForKey:key];
NSLog(@"%@", obj);

key = [enumerator nextObject];

}

原文地址:https://www.cnblogs.com/cindyli/p/9077942.html

时间: 2024-08-06 04:59:12

NSDictionary/NSMutableDictionary的相关文章

NSDictionary , NSMutableDictionary, NSMutableDictionary 和 NSMutableSet)相当于java的map、set

1 NSDictionary 和 NSMutableDictionary NSDictionary  :就是java中的map; 放入对象是键值对 key-value  , 同样 秉持了一样的原则,只能放入对象,不可本体增删改; (1)初始化方法 + dictionaryWithObject:forKey: + dictionaryWithObjects:forKeys: + dictionaryWithObjectsAndKeys: 这三个是最常用的吧,注意是对象在前,key在后 2 访问 k

OC -- NSDictionary NSMutableDictionary

NSDictionary  NSMutableDictionary 只能存放OC对象,不能存放int, float, double, struct, enum类型数据 NSDictionary *dict1 = @{@"name" : @"As god name", @"address" : @"shanghai", @"program" : @"ios"}; NSDictionary

关于NSString,NSMutableString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary

NSString,NSMutableString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary 在 OC 中我们天天都要用,而我们要怎么学习它们呢? 我认为学习这些常用的类,使用类比的方法就行了,只要学会一个类,就能类比另外两个类了.. 比如,NSString和NSMutableString的可变与不可变,主要区分的标准是,它们本身是不是可以变,可变的一般都能增,删,改,而不可变的方法主要是创建,查看,得到元素个数或者长度等等;

NSString,NSMutableString, NSArray ,NSMutableArray,NSDictionary,NSMutableDictionary 深拷贝,浅拷贝分析

NSString,NSMutableString, NSArray ,NSMutableArray,NSDictionary,NSMutableDictionary 深拷贝,浅拷贝. 首先我们得知道什么是深拷贝,什么事浅拷贝. 简单点说深拷贝就是拷贝内容,浅拷贝就是拷贝指针. 上面那些类我们可以这样理解他们的深.浅拷贝.只要上面那些类中的NSString,NSArray,NSDictionary这三个类的实例化对象是调用copy方法进行拷贝那么他们拷贝的就是一个指针,就是说他们只是拷贝了一个指向

NSDictionary&amp;NSMutableDictionary常用操作梳理

同数组(NSArray),字典类NSDictionary也支持Object Literals,允许我们方便地基于字面量定义初始化字典对象.以下基于字面量语法快捷初始化字典(NSDictionary): NSDictionary* literalDictionary = @{@"k1":@"v1", @"k2":@"v2", @"k3":@"v3"};  1.创建初始化(Initializ

OC_ NSDictionary ,NSMutableDictionary 字典

1 数组与字典的区别 数组: 1>存放一组有序对象的集合 2> 通过index下标找对应的对象 3> 数组中对象可以重复 字典: 1>存放一组无序key-value的集合 2> 通过key找到对应的value 3>字典key是唯一的,但是不同的value可以重复 2 字典的初始化 使用一个类方法创建一个空字典(常用) NSDictionary *dic1 = [NSDictionary dictionary]; (常用) 通过字面量去创建不可变数组和不可变字典 NSAr

Objective-C NSDictionary &amp; NSMutableDictionary

现在每天要抓紧的学习了,所以争取每天能学习两个知识点,尽快把OC学习完,然后进入开发阶段! 加油. #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { #pragma mark - NSDictionary //NSDictionary //使用initWithObjectsAndKeys:方法创建字典对象 //在对象创建过程中,一次性存入多个键值对,值(v

【Foundation Frame】NSDictionary/NSMutableDictionary

NSDictionary 用于保存具有映射关系的数据,NSDictionary 包含两组数据,一组用来保存key值,一组用来保存valure值. 一个Key可以对应多个value,反过来则不可以. // //  main.m //  NSDictionary // //  Created by mac on 14-12-4. //  Copyright (c) 2014年 mac. All rights reserved. // #import<Foundation/Foundation.h>

NSDictionary NSMutableDictionary NSSet NSMutableSet

//description只是返回了一个字符串 //    [person description]; //        //如果想要打印需要NSLog //    NSLog(@"%@", [person description]);         //打印一个对象,实质打印的是description返回的字符串,如果没有重写description方法,系统默认打印<类名:指针[CDATA[]]> //    NSLog(@"%@", person