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 removeObjectForKey@"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];

}

猜你喜欢

转载自www.cnblogs.com/cindyli/p/9077942.html