您的位置:首页 > 其它

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

2015-04-13 22:59 435 查看
一、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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: