zoukankan      html  css  js  c++  java
  • 黑马程序员--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类。

  • 相关阅读:
    【NOIP 2003】 加分二叉树
    【POJ 1655】 Balancing Act
    【HDU 3613】Best Reward
    【POJ 3461】 Oulipo
    【POJ 2752】 Seek the Name, Seek the Fame
    【POJ 1961】 Period
    【POJ 2406】 Power Strings
    BZOJ3028 食物(生成函数)
    BZOJ5372 PKUSC2018神仙的游戏(NTT)
    BZOJ4836 二元运算(分治FFT)
  • 原文地址:https://www.cnblogs.com/waterfox/p/4388814.html
Copyright © 2011-2022 走看看