【黑马程序员】【Foundation框架】字典NSDictionary和NSMutableDictionary

字典 由键-值对组成的数据集合

4种创建字典方式

1>针对单个键值对 直接赋值

 1  NSDictionary *dic = [NSDictionary dictionaryWithObject:@"dajie" forKey:@"name"];//直接创建字典
 2     id object = [dic objectForKey:@"name"];// 取出name键对应值
 3     NSLog(@"%@",object);

2>以键值对集合创建

1       NSArray *obj = @[@"dajie",@"ly"];
2       NSArray *keys = @[@"name",@"address"];
3       NSDictionary *dic1 = [NSDictionary dictionaryWithObjects:obj forKeys:keys];//创建字典
4       NSLog(@"%@",dic1);

3>直接创建并赋值

1      NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"dajie",@"name",@"ly",@"address", nil];//nil不可少
2      NSLog(@"\n---%@",dic2);
3      id obj2 = [dic2 objectForKey:@"name"];//根据键取出对应的值
4      NSLog(@"%@",obj2);

4>开发中常用

    //xcode 新特性 开发中常用
15     NSDictionary *dic3 = @{@"name" : @"dajie",@"address":@"ly",@"qq":@"12324124"};
16     NSLog(@"%@\n--%@--%ld",dic3,[dic3 objectForKey:@"name"],dic3.count);

 

 

可变字典

2      NSMutableDictionary *mdic = [NSMutableDictionary dictionary];//创建

添加元素和删除元素

复制代码
//添加键值对
20     [mdic setObject:@"dajie" forKey:@"person"];
21     [mdic setObject:@"hashiqi" forKey:@"dog"];
22     [mdic setObject:@"shapi" forKey:@"dog"];  //主键一样字典元素前者会被后者覆盖
23     NSString *str = mdic[@"dog"];
24     NSLog(@"%@",str);
25   //删除
26     [mdic removeAllObjects];
27     [mdic removeObjectForKey:@"dog"];
28     NSLog(@"%@",mdic);
复制代码

遍历元素

1基本for循环遍历

复制代码
30    NSDictionary *newDic = @{
31                              @"name": @"dajie",
32                              @"dog":@"HASHIQI"
    };
33     NSArray *key = [newDic allKeys];//取出所有的key
34     for (int i;  i < newDic.count; i++) {
35         NSString *keys = key[i];
36         NSString *value = newDic[keys];
37         NSLog(@"%@ = %@",keys,value);
38     }
复制代码

2 简洁遍历

//推荐使用 快速遍历
40     [newDic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
41         NSLog(@"%@ - %@ ",key ,obj );
42     }];

 总结

复制代码
/* NSArray 相当于java List;
// NSSet相当于java Set 
// NSdictionary相当于java Map 
// NSArray NSMutableArray
有序 快速访问 @[obj1,obj2,obj3];
快速访问元素 数组名[i];

// NSSet NSMutableSet
无序
// NSDictionary NSMutableDictionary 
无序 快速创建@{key1 : value1,key2 : value2};
快速访问 字典名[key];
*/
复制代码

 

复制代码
 1     NSArray *persons = @[
 2 @{@"name" :@"dajie",@"phone":@"1234353",
 3   @"books" : @[@"5分钟编程ios",@"5分钟编程Android"]},
 4 @{@"name" :@"xiaojie",@"phone":@"2234353"},
 5   @{@"name" :@"jinyu",@"phone":@"3234353",@"age" : @"1.2"}
 6                          ];
 7     // 先取出数组位置对应的字典
 8     // 再根据字典name这个key找到对应的值
 9 //    NSLog(@"%@",persons[1][@"name"]);
10 //      NSLog(@"%@",persons[0][@"books"]);
11     
12     for (NSString *arrays in persons) {
13 //     NSInteger *lines  = [persons indexOfObject:@"name"];
14 //        NSLog(@"%ld - %@",lines,arrays);
15         NSLog(@" %@ ",arrays);
16     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值