NSDictionary的用法

将数据以键值对的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值在Objective - C语言中字典就是做这个事情的,键值对的值和键都是任意的对象,但是键往往使用字符串。字典存储对象的地址没有顺序。

、创建不可变字典

1、 NSDictionary *dictionary = [[NSDictionary alloc]  initWithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3",nil];

使用键值对初始化字典对象,结尾必需使用nil标志结束。

2、 NSDictionary *dict = [NSDictionary dictionaryWithObject:@"obj" forKey:@"key"];

    

 NSArray *object = @[@"obj1",@"obj2",@"obj3"];

 NSArray *key = @[@"key1",@"key2",@"key3"];

 dict = [NSDictionary dictionaryWithObjects:object forKeys:key];

 NSLog(@"%@",dict);


还有一种简便的写法

3、NSDictionary *dict = @{@"k1" : @"obj1" , @"k2" : @"obj2" , @"k3" : @"obj3"}; //key写前面,末尾不用加nil

//count是计算有多少个键值对

 NSLog(@"count = %zi",dict.count);


二、字典一些方法

  //根据指定的key找到对应的值

  id obj = [dict objectForKey:@"k2"];

  NSLog(@"%@", obj);

    

  //将字典写入文件中

  NSString *path = @"/Users/lijun/Desktop/dict.xml";

  [dict writeToFile:path atomically:YES];

    

  //从文件中读取内容

  NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

  NSLog(@"dic=%@",dic);


 //返回所有的key

  NSArray *keys = [dict allKeys];

    

 //返回所有的值

  NSArray *objc = [dict allValues];

    

 //根据多个key取出对应的多个valuekey找不到对应的value时,用marker参数值代替

  objc = [dict objectsForKeys:[NSArray arrayWithObjects:@"key1",@"key2",@"k",nil] notFoundMarker:@"notFound"];

  NSLog(@"objc = %@",objc);


三、字典的遍历

1、快速遍历

void dictSort1()

{

    NSArray *object = @[@"obj1",@"obj2",@"obj3"];

    NSArray *key = @[@"key1",@"key2",@"key3"];

    NSDictionary *dict = [NSDictionary dictionaryWithObjects:object forKeys:key];

    

    for (id key in dict)

    {

        id objc = [dict objectForKey:key];

        NSLog(@"%@= %@",key,objc);

    }

}

2、迭代器

void dictSort2()

{

    NSArray *object = @[@"obj1",@"obj2",@"obj3"];

    NSArray *key = @[@"key1",@"key2",@"key3"];

    NSDictionary *dict = [NSDictionary dictionaryWithObjects:object forKeys:key];

    

    //key迭代器

    NSEnumerator *enumer = [dict keyEnumerator];

    id keys = nil;

    while (keys = [enumer nextObject])

    {

        id values = [dict objectForKey:keys];

        NSLog(@"%@= %@",values,keys);

    }

    //object迭代器

    NSEnumerator *objEnumer = [dict objectEnumerator];

}

3、用block遍历

void dictSort3()

{

    NSArray *object = @[@"obj1",@"obj2",@"obj5"];

    NSArray *key = @[@"key1",@"key2",@"key3"];

    NSDictionary *dict = [NSDictionary dictionaryWithObjects:object forKeys:key];

    

    [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

        NSLog(@"%@=%@",key,obj);

    }];

}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值