NSDictionary和NSMutableDictionary

字典类
字典集合, 它是由“键-值”对构成的集合。 
键集合不能重复,也就是说字典中的键必须是单值的;

值集合没有特殊要求。 
键和值集合中的元素通常是字符串,但也可以是任何对象, 但是不能是nil。 

词典可以使固定的,也可以是可变的。

可变词典中的记录可以动态添加和删除。

和数组对象不一样,词典对象是无序的。

这个字典类与java中的HashMap很相似,也是key-value的格式。

举例如下:
字典类数据结构模型, 
图所示的“学生与学号” 集合;

与数组类一样, 字典 类也分为NSDictionary不可 变字典和NSMutableDictionar y可变字典。 

NSDictionary类
NSDictionary有很多方法, 下面是总结常用的方法: 
count字典集合的长度; 
objectForKey: 通过键获得值对象; 
allKeys: 返回一个数组包含所有键; 
dictionaryWithObjectsAndKeys: 类级构造方法; 
initWithObjectsAndKeys: 实例构造方法;
-(NSEnumerator *)keyEnumerator
为词典中的所有键返回一个NSEnumerator对象
-(NSArray *)keysSortedByVauleUsingSelector:(SEL)selector
返回字典中的键数组,根据它的selector进行排序
-(NSEnumerator *)objectEnumerator
为词典中的所有值返回一个NSEnumerator对象
-(void)enumerateKeysAndObjectsUsingBlock(void(^)(id key, id obj, BOOL *stop))block
遍历字典的键-值



[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main (int argc, const charchar * argv[]) {  
  4.       
  5.     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];  
  6.   
  7.     NSArray * keys = [@"one two three four five" componentsSeparatedByString:@" "];  
  8.     NSArray * values = [@"alpha bravo charlie delta echo" componentsSeparatedByString:@" "];   
  9.     NSDictionary * dict = [[NSDictionary alloc] initWithObjects:values forKeys:keys];  
  10.       
  11.     NSLog(@"%@", [dict description]);  
  12.       
  13.     [dict release];  
  14.       
  15.     [pool drain];  
  16.     return 0;  
  17. }  
NSArray * keys = [@“one two three four five”componentsSeparatedByString:@“ ”] 语句是将一个字符
串按照空格分割返回NSArray对象, 同理获得values对象,
然后使用 NSDictionary * dict = [[NSDictionary alloc] initWithObjects:values forKeys:keys] 语句
把keys和values放入到不可变字典对象dict中。

NSMutableDictionary类
NSMutableDictionary 是NSDictionary的子类,
NSMutableDictionary有很多方法, 下面是总结常用的方法: 
setObject: forKey: 通过键设值,若键存在,则替换; 
removeObjectForKey: 按照键移除值; 

+(instancetype)dictionaryWithCapicity:size
-(instancetype)initWithCapicity:size
-(void)removeAllObjects
删除字典中的所有记录


[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main (int argc, const charchar * argv[]) {  
  4.     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];  
  5.       
  6.     NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init];  
  7.       
  8.     // add objects  
  9.     [mutable setObject@"Tom" forKey@"tom@jones.com"];  
  10.     [mutable setObject@"Bob" forKey@"bob@dole.com" ];  
  11.       
  12.     NSLog(@"%@", [mutable description]);  
  13.       
  14.     [mutable release];  
  15.       
  16.     [pool drain];  
  17.     return 0;  
  18. }  
NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init] 是采用默认的init构造方法创建
NSMutableDictionary对象mutable。 
[mutable setObject:@"Tom" forKey: @"tom@jones.com"] 语句是按照键tom@jones.com添加Tom对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值