07 - 字典

字典里存放的是许多键值对。在字典的内部,键值对的key是唯一的,也就是说在一个字典的内部没有哪两个键值对的key是相同的,如果有两个键值的key是一样的话,就会出现运行时错误。一个key可以是任何遵循NSCopying协议,并且实现hash和isEqual:方法的任意对象。下面的这个字典包括了一个人的各种信息。像例子里所展示的那样,字典里可以包含任何对象,包括另一个集合对象。

字典和数组一样,也有可变和不可变版本。

创建一个字典有分配内存-初始化和简洁的类方法。如:

最后一个方法  dictionaryWithObjects:forKeys:  接收两个参数,并且都是数组实例。两个数组应该是同样长度的,第一个数组中的对象和第二个数组中的对象是分别对应的,也就是说第一个数组中的第一个数组和第二个数组中的第一个key是对应的。

count 方法返回的是字典中键值对的数目,可以通过调用 objectForKey: 这个方法来访问字典中具有某个特别key的键值,如果字典中没有这个key,那么就会返回nil。

例如:

1 NSArray *keys = [NSArray arrayWithObjects:@"name", @"identificationNumber", nil];
2 NSArray *values = [NSArray arrayWithObjects:@"Bob", [NSNumber numberWithInt:123], nil];
3 NSMutableSet *dictionary = [NSDictionary dictionaryWithObjects:values forKeys:keys];
4 NSLog(@"dictionary count: %d", [dictionary count]); //prints the count as 2
5 NSLog(@"object for name key: %@", [dictionary objectForKey:@"name"]); //prints Bob
6 NSLog(@"object for birthday key: %@", [dictionary objectForKey:@"birthday"]); // prints nil

 

就像NSArray一样,字典也有另外的一种定义方式:

1 NSDictionary *dictionary = @{
2    @"name" : NSUserName(),
3    @"date" : [NSDate date],
4    @"processInfo" : [NSProcessInfo processInfo]
5 };
id value = object[key];

可变字典:

是字典的扩展,提供了通过key来对字典进行添加、删除、替换的方法。

用 removeObjectForKey: 这个方法来移除某个key对应的值,

通过 setObject: forKey: 方法来对字典进行添加和替换的操作。如果字典内部之前有一个键值对的key跟这个方法中的Key 是一样的,那么这个方法就会替换掉之前字典中的那个键值对;相反的,如果之前这个字典当中不存在这个key 那么就会重新添加一个新的键值对。

 

posted @ 2015-07-26 15:49  借东西的小人Jessica  阅读(143)  评论(0)    收藏  举报