Objective-C 初窥之字典(Dic)

来源:互联网 发布:fanuc 电池 数据全清 编辑:程序博客网 时间:2024/05/27 16:43

1 前言

今天我们来学习一下Objective-C 中的字典,类似Java里的Map是key-value的形式进行存储的。

2 NSDictionary简介

NSDictionary这种容器与NSArray一样,是不可变的。

它将 键-值关联起来,使用它,你可以方便高效的利用键值检索数据。
一个键只能对应一个值,一个值却可以有很多键。
通常,键可以是任何遵循NSCopying协议的对象,但是通常是一个NSString,键值和数据必须不为nil,如果想表示一个空的值,则用NSNull。

通过setValue增加字典元素,然后调用objectForKey取出元素,NSDictionary类主要使用就是这两个操作。但是,如果将普通的字符串对象换成另外NSDictionary对象,二另外的NSDictionary对象又可以包含NSArray,NSDictionary等各种对象,从而可以创建非常复杂的数据结构,NSDictionary的灵活和强大作用才真正显示出来。

2.1 创建字典

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];

初始化一个新的已分配好内存的字典,这个字典的内容包括了,value是一个objects的数组,key是一个keys的数组。

- (id)initWithObjectsAndKeys:(id)firstObject , ...
初始化一个新的字典,这个字典的内容根据传入的 object,key 而定
比如:
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
2.2 查询内容个数,比较

- (NSUInteger)count //返回字典的key数。- (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary //比较两个字典
2.3 访问 键和值 (key - value)

- (NSArray *)allKeys //返回一个数组,数组里包含的是所有的key- (NSArray *)allValues //返回一个数组,数组里包含的是所有的value- (id)objectForKey : (id)aKey //返回给定key与之关联的value,若key不存在,返回nil.- (id)valueForKey:(NSString *)key //返回给定key与之关联的value

3 NSMutableDictionary简介

Mutable version of NSDictionary.它是NSDictionary的可变版本。

+(id)dictionaryWithCapacity:size    //创建一个size大小的可变字典-(id)initWithCapacity:size          //初始化一个size大小的可变字典-(void)removeAllObjects             //删除字典中所有元素-(void)removeObjectForKey:key       //删除字典key位置的元素-(void)setObject:obj forKey:key     //增加(obj,key)到字典中,若key已经存在,则替换值为obj