Objective-C------NSDictionary、NSMutableDictionary字典对象用法总结

//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];  
//查找

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值