NSDictionary/NSMutableDictionary特点:
(1)里存储的东西都是键值对
(2)可以像数组一样快速创建(适用NSDictionary):@{key1 : value1, key2 : value2}
(3)快速访问元素:字典名 [key]
比如可以这样为指定key赋值:
dic [@”key1”] = @”value1”;
快速获取key所对应的value:
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];
(1)也可创建多维字典
使用快速创建的方式:
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];
}