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

来源:互联网 发布:js splice函数 编辑:程序博客网 时间:2024/05/23 23:20
一、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对应的valueNSLog(@"%@", 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
原创粉丝点击