//NSDictionary字典对象--不可变字典
/*
字典:由键-对象对组成的数据集合,可以是动态的,字典中的记录可以动态的添加和删除,可以用键检索词典或者枚举他们的内容
键:必须是单值,一般是字符串,也可以是其他的对象类型
值:可以是任何对象类型除了nil
*/
//创建
//创建单个字典
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"obj" forKey:@"key"];
//创建多个字典
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"obj1", @"key1",@"obj2", @"key2",nil];
//根据已有字典创建新的字典
NSDictionary *dic1 = [NSDictionary dictionaryWithDictionary:dic];
//将从新分配的字典初始化为键-对象对
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"obj1",@"key1",@"obj2",@"key2",nil];
//特殊语法创建
NSDictionary *dic = @{obj1,key1,obj2,key2,.......};
//查找
//返回一个数组包含字典中所有的键
NSArray *arr = [dic allKeys];
//返回一个数组包含字典中所有的值
NSArray *obj = [dic allValues];
//返回字典中的记录数
NSUInteger cnt = [dic count];
//返回指定的Key的对象
id obj = [dic objectForKey:@"key1"];
= dic [@"key1"];
//NSEnumerator
//依附于集合类(NSArray,NSSet,NSDictionary),没有用来创建实例的接口。
//NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项。
//对可变数组进行枚举操作时,不能通过添加或删除对象这类方式来改变数组容器。
//为词典中所有的键返回一个NSEnumeraotr对象
NSEnumerator enkey = [dic KeyEnumerator];
//为词典中所有的值返回一个NSEnumeraotr对象
NSEnumerator enobj = [dic objectEnumerator];
//通过枚举快速遍历
id key = [enkey nextObject];
while (key) {
NSLog(@"%@", [enkey objectForKey:key]);
key = [enkey nextObject];
}
//通过块获取词典中的每一条目,当遍历完成或者指针stop=YES结束处理
[dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@obj for key %@ is %@”, key, obj);
if ([@“key2” isEqualToString:key]) { *stop = YES; }}
];
//快速遍历
for(id key in dic) {
NSLog(@"key = %@ obj = %@", key, [dic objectForKey:key]);
}
//NSMutableDictionary字典对象---可变字典
//创建
//空的字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
//使用一个初始化指定的size创建可变字典
int size = 10 ;
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:size];
NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys: @"obj1", @"key1", @"obj2", @"key2", nil];
//增加
//增加新的键值对象
[dic setValue:@"obj3" forKey:@"key3"];
//增加已经存在的字典
[dic addEntriesFromDictionary:dic1];
//修改
//用新的字典换旧的字典
[dic setDictionary:dic1];
//向词典为key的键中添加obj,如果key存在则替换该值
[dic setObject:@"obj3" forKey:@"key2"];
dic[@"key2"] = @"obj3";
//删除
//根据key删除obj
[dic removeObjectForKey:@"key1"];
//根据key数组删除元素
NSArray *arr = [dic allKeys];
[dic removeObjectsForKeys:arr];
//删除所有元素
[dic removeAllObjects];
//查找
Objective-C------NSDictionary、NSMutableDictionary字典对象用法总结
最新推荐文章于 2022-11-19 21:48:39 发布