黑马程序员--Foundation框架之--NSDirctionary类以及它的子类NSMutableDirctionary类

 

------IOS培训期待与您交流! -------

 

今天来看一下Foundation框架中的NSDirctionary 类,NSMutableDirctionary类,OC中叫字典,字典是无序的,这个和NSArray不一样。

一、NSDirctionary类 

1、创建方法

// 字典的创建  
NSArray *array1 = [NSArray arrayWithObjects:@"zhangsan",@"zhangfei", nil nil];  
NSArray *array2 = [NSArray arrayWithObjects:@"lisi",@"liping", nil nil];  
  
//第一个元素:key:@"zhang" value:array1  
//第二个元素:key:@"li"  value:array2  
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li", nil nil];  
NSLog(@"%@",dict); 

我们可以看到,NSDirctionary类的创建是基于NSArray的,这里需要注意结尾是:nil

2、添加元素 

// 存放一个元素  
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:array1 forKey:@"zhang"];  

3、获取所有元素的key

// 获取所有的key  
NSArray *allKeys = [dict allKeys];  

4、获取所有元素的value

// 获取所有的value  
NSArray *allValues = [dict allValues];  

5、通过key获取value

// 通过key获取value  
NSArray *values = [dict objectForKey:@"zhang"];  

6、NSDirctionary的快速创建方式和访问方式

// 优化的语法  
NSDictionary *dict3 = @{@"zhangsan":array1,@"lisi":array2};  
NSLog(@"%@",dict3);  
      
NSArray *array4 = dict3[@"zhang"];   

二、NSMutableDirctionary类

之前的NSDirctionary类是不可变字典,同样的OC中也有对应的可变字典:NSMutableDirctionary

1、创建可变字典

// 创建一个可变字典,大小为3  
NSMutableDictionary *md1 = [[NSMutableDictionary alloc] initWithCapacity:3];  
NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lis", nil nil];  

创建一个可变字典,可以指定其大小,当然当容量满的之后,他回自动扩容

2、添加元素

// 添加元素  
[md1 setObject:array1 forKey:@"zhang"];  
      
NSMutableDictionary *md2 = [[NSMutableDictionary alloc] initWithCapacity:3];  
[md2 addEntriesFromDictionary:md1];  

3、删除元素

// 删除元素  
[md1 removeObjectForKey:@"zhang"];//以key删除  
[md1 removeAllObjects];//删除所有元素  
[md1 removeObjectsForKeys:array1];//以value删除 

4、遍历字典

// 循环遍历字典  
// 方式一:快速遍历  
for (NSString *key in md1) {  
    NSArray *values = [md1 objectForKey:key];  
    for(NSString *v in values){  
        NSLog(@"%@",v);  
    }  
}  
      
//方式二:普通遍历  
NSArray *allKey = [md1 allKeys];  
for(int i=0;i<allKey.count;i++){  
    NSArray *value = [md1 objectForKey:allKey[i]];  
} 

这一篇文章就介绍了OC中的NSDirctionary类和NSMutableDirctionary类。

 

posted on 2015-04-02 23:26  waterfoxjie  阅读(204)  评论(0编辑  收藏  举报