【OC05-1】字典、可变字典 (连载六)

//************* NSDictionary ***************************
//注意:Person。m 文件中重写了 description方法

- ( NSString *)description
{
   
return [ NSString stringWithFormat : @"<Person:%p>---%@---%ld" , self , _name , _age ];
}

main.m中
        // 初始化一个字典
       
// 注意:字典中所装的数据类型:对象类型,,不可以是基本数据类型
       
// 字典是无序的
       
//key 通常是字符串, key 必须唯一
       
NSDictionary *dic1 = [[ NSDictionary alloc ] initWithObjectsAndKeys : @"v1" , @"k1" , @"v2" , @"k2" , nil ];
       
NSLog ( @"dic1 is %@" ,dic1);
       
       
// 创建空的数据字典
       
NSDictionary *nullDic = [ NSDictionary dictionary ];
       
NSLog ( @"nullDic is %@" ,nullDic);
       
       
// 创建 Person 对象
        Person *zhangsan = [[Person alloc]init];
        zhangsan.name =
@" 张三 " ;
        zhangsan.age =
20 ;
       
        Person *lisi = [[Person alloc]init];
        lisi.name =
@" 李四 " ;
        lisi.age =
22 ;
       
        Person *wangwu = [[Person alloc]init];
        wangwu.name =
@" 王五 " ;
        wangwu.age =
23 ;
       
       
// 创建一个数组 names
       
NSArray *names = @[ zhangsan, lisi, wangwu ] ;
       
       
NSDictionary *dic2 = [[ NSDictionary alloc ] initWithObjectsAndKeys :
                             
@"v1" , @"k1" ,
                             
@"v2" , @"k2" ,
                             
@"v3" , @"k3" ,
                              names,
@"k4" , nil ];
       
NSLog ( @"dic2 is %@" ,dic2);
       
       
// 从字典中取值,
       
// 如果这个 key 不存在,则返回 NULL
       
NSString *str1 = [dic2 objectForKey : @"k1" ];
       
NSString *str2 = [dic2 objectForKey : @"k2" ];
       
NSString *str3 = [dic2 objectForKey : @"k5" ];
       
NSLog ( @"str1 is %@" , str1);
       
NSLog ( @"str2 is %@" , str2);
       
NSLog ( @"str3 is %@" , str3);
       
       
// 取出字典中的数组中的第一个元素的姓名
//        NSArray *arr = [dic2 objectForKey:@"k4"];
//        Person *ps = [arr objectAtIndex:0];
//        // 嵌套调用
        Person *ps = [[dic2 objectForKey:
@"k4" ] objectAtIndex: 0 ];
        NSLog(
@"ps name is %@" ,ps.name);

       
// 字典中键值对的个数
       
NSInteger count = dic2. count ;
       
NSLog ( @"count is %ld" ,count);
       
       
// 取出字典中所有的 key
       
NSArray *keys = [dic2 allKeys ];
       
NSLog ( @"keys is %@" ,keys);
       
       
// 取出字典中所有的 value
       
NSArray *values = [dic2 allValues ];
       
NSLog ( @"values is %@" ,values);
       
       
// 字典的快速创建与取值
       
NSDictionary *dic3 = @{ @"k1" : @"v1" ,
                              
@"k2" : @"v2" ,
                              
@"k3" : @"v3" } ;
       
NSString *v1 = dic3[ @"k1" ];
       
       
NSLog ( @"dic3 is %@" ,dic3);
        NSLog(@"vi is %@",v1);



【可变字典 NSMutableDictionary



#import <Foundation/Foundation.h>

int main( int argc, const char * argv[]) {
   
@autoreleasepool {
       
//******************* NSMutableDictionary *********************************
       
       
// 初始化空的字典
       
NSMutableDictionary *dic1 = [ NSMutableDictionary dictionary ];
       
       
// 给字典预期的空间
//        NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithCapacity:5];
       
       
// 添加元素
        [dic1
setObject : @"v1" forKey : @"k1" ];
        [dic1
setObject : @"v2" forKey : @"k2" ];
        [dic1
setObject : @"v3" forKey : @"k3" ];
       
       
NSLog ( @"dic1 is %@" ,dic1);
       
       
// 设置键值对,如果 key 已经存在,则是修改 key 所对应的 value ,如果不存在,则创建一个新的键值对
        [dic1
setObject : @"v5" forKey : @"k5" ];
       
       
NSLog ( @"dic1 is %@" ,dic1);
       
       
// 根据 key 删除元素
        [dic1
removeObjectForKey : @"k5" ];
       
NSLog ( @"dic1 is %@" ,dic1);
       
       
// 删除所有元素
        [dic1
removeAllObjects ];
       
NSLog ( @"dic1 is %@" ,dic1);
       
       
// 字典的遍历
       
NSDictionary *dic = @{ @"k1" : @"v1" ,
                             
@"k2" : @"v2" ,
                             
@"k3" : @"v3" ,
                             
@"k4" : @"v4" ,
                             
@"k5" : @"v5" } ;
       
NSArray *keys = [dic allKeys ];
       
       
// 传统遍历
       
for ( int i = 0 ; i < dic. count ; i++) {
           
// 获取 key
           
NSString *key = [keys objectAtIndex :i];
           
NSString *value = [dic objectForKey :key];
           
NSLog ( @"key:%@-------value:%@" ,key, value);
        }
       
       
// 快速遍历
       
// 拿到的是 key
       
for ( id key in dic) {
           
id value = [dic objectForKey :key];
           
NSLog ( @"key:%@-------value:%@" ,key, value);
        }
    }
   
return 0 ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值