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

来源:互联网 发布:图书馆管理系统数据库 编辑:程序博客网 时间:2024/05/17 22:26
//************* NSDictionary ***************************
//注意:Person。m 文件中重写了description方法

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

main.m中
        //初始化一个字典
       
//注意:字典中所装的数据类型:对象类型,,不可以是基本数据类型
       
//字典是无序的
       
//key通常是字符串,key必须唯一
       
NSDictionary *dic1 = [[NSDictionaryalloc]initWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",nil];
       
NSLog(@"dic1 is %@",dic1);
       
       
//创建空的数据字典
       
NSDictionary *nullDic = [NSDictionarydictionary];
       
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 = [[NSDictionaryalloc]initWithObjectsAndKeys:
                             
@"v1",@"k1",
                             
@"v2",@"k2",
                             
@"v3",@"k3",
                              names,
@"k4",nil];
       
NSLog(@"dic2 is %@",dic2);
       
       
//从字典中取值,
       
//如果这个key不存在,则返回NULL
       
NSString *str1 = [dic2objectForKey:@"k1"];
       
NSString *str2 = [dic2objectForKey:@"k2"];
       
NSString *str3 = [dic2objectForKey:@"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 = [dic2allKeys];
       
NSLog(@"keys is %@",keys);
       
       
//取出字典中所有的value
       
NSArray *values = [dic2allValues];
       
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>

intmain(intargc, const char * argv[]) {
   
@autoreleasepool {
       
//******************* NSMutableDictionary *********************************
       
       
//初始化空的字典
       
NSMutableDictionary *dic1 = [NSMutableDictionarydictionary];
       
       
//给字典预期的空间
//        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 = [dicallKeys];
       
       
//传统遍历
       
for (inti = 0; i < dic.count; i++) {
           
//获取key
           
NSString *key = [keysobjectAtIndex:i];
           
NSString *value = [dicobjectForKey:key];
           
NSLog(@"key:%@-------value:%@",key, value);
        }
       
       
//快速遍历
       
//拿到的是key
       
for (idkey in dic) {
           
id value = [dic objectForKey:key];
           
NSLog(@"key:%@-------value:%@",key, value);
        }
    }
   
return 0;
}
0 0