【Foundation学习笔记】常用类--NSDictionary和NSMutableDictionary

一、NSDictionary(不可变字典)
1、基本概念:
键值对:一个key对应一个value,它们合称键值对
2、创建字典对象
(1)创建对象存储单个键值对

NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
(2)存储多个键值对
1>
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"北京"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

2> 
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"jack", @"name",
@"北京", @"address",
@"584340617", @"qq", nil];

3> 常用写法
NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
3、根据key访问value
(1)id obj = [dict objectForKey:@"name"];
(2)id obj = dict[@"name"];
4、键值对个数
NSLog(@"%ld", dict.count);
二、NSMutableDictionary(可变字典)
1、创建字典对象

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
2、添加键值对
// 键值对在字典中是没有顺序的
[dict setObject:@"jack" forKey:@"name"];
[dict setObject:@"北京" forKey:@"address"];
// 添加注意:同一个key又添加了一个值,那么将覆盖前面的值,一个key只能对应一个值
[dict setObject:@"rose" forKey:@"name"];
3、删除键值对
// 根据key删除键值对
[dict removeObjectForKey:@"name"];

// 删除全部键值对
[dict removeAllObjects];
4、打印字典
NSLog(@"%@", dict);
5、使用注意
(1)可变字典不能使用快捷方法创建,就算创建,本质也是不可变字典
NSMutableDictionary *dict = @{@"name" : @"jack"};    // 会报警
因为dict的本质还是不可变字典,所以下面代码报错,不能发送消息
[dict setObject:@"rose" forKey:@"name"];
(2)字典不允许有相同的key,但是允许有相同的value
6、字典遍历
(1)C语言方法

for (int i = 0; i < dict.count; i++)
{
    NSString *key = keys[i];
    NSString *object = dict[key];

    NSLog(@"%@ - %@", key, object);
}
(2)利用block遍历键值对
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop) 
{
    NSLog(@"%@ - %@", key, obj);
}];
三、字典数组
NSArray *persons = @[
    @{@"name" : @"jack", @"qq" : @"122413", @"books" : @[@"5分钟突破iOS编程", @"5分钟Android突破编程"]},
    @{@"name" : @"rose", @"qq" : @"45243"},
    @{@"name" : @"jim", @"qq" : @"124513"},
    @{@"name" : @"jake", @"qq" : @"1765413"}
];
(1)访问数组元素
NSDictionary *jim = persons[2];
NSLog(@"%@", jim);
(2)访问更深层次结构
// 先取出1位置对应的字典
// 再取出字典中qq这个key对应的value
NSLog(@"%@", persons[1][@"qq"]);
(3)取出books数组
NSArray *array = persons[0][@"books"];
NSLog(@"%@", array);
(4)取出 5分钟Android突破编程
NSString *bookname = persons[0][@"books"][1];
NSLog(@"%@", bookname);
四、总结
1. NSArray\NSMutableArray
* 有序
* 不可变数组可以快速创建:@[obj1, obj2, obj3]
* 快速访问元素:数组名[i]
2. NSSet\NSMutableSet
* 无序
3. NSDictionary\NSMutableDictionary
* 无序
*不可变字典可以快速创建:@{key1 : value1, key2 : value2}
* 快速访问元素:字典名[key]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值