OC语言day08-09可变字典NSMutableDiction

2016-07-31  本文已影响66人  liyuhong165

pragma mark NSMutableDictionary

pragma mark 概念

/**

 概念: 《字典存储的都是键值对 都是通过某个 键  找到 对应的 值》
 
 NSMutableDictionary
 @"值":@"键"
 @"lyh":@"name"
 // 键值对 通过键(name) 找到 对应的值(lyh)
 
 1.创建 (dictionary)
 
 2.添加 (setObject:值 forKey:键)
   添加一个字典 (setValuesForKeysWithDictionary:字典)
 
 3.获取 (objectForKey:键)
        dict[@"键"];
 
 4.删除
    删除一个 (removeObjectForKey)
    删除多个 (removeObjectsForKeys)
 
 5.修改 (setObject:值 forKey:键) // 添加同名的key 就是修改了
 
 ⚠️ 注意点
1. 不能使用@{}来创建一个可变的字典
2. 如果是不可变字典, 那么key不能相同
如果是不可变的字典, 出现了同名的key,那么后面的key对应的值 不会被保存
如果是在可变的字典中, 那么后面的
 
 #pragma mark 字典(NSDictionary)和数组(NSArray) 的区别
 NSArray 是有序的
 NSDictionary 是无序的
 
 NSArray 是通过下标访问元素
 NSDictionary 是通过key访问元素
 
#pragma mark 创建 和 访问
 array
 创建
 @[@"lyh",@"lys"]; (返回的是一个不可变数组)
 访问
 id a = array[1];
 赋值
 array[1] = @"lyh";
 
 dict
 创建
 @{@"name":@"lyh",@"age":@"22"};
 访问
 id a = dict[@"name"];
 赋值
 dict[@"name"] = @"lyh";

 */

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类

#pragma mark main函数
int main(int argc, const char * argv[])
{
#pragma mark NSMutableDictionary
    
#warning 1.创建
    NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
    NSLog(@"dic %@",dictM);
#warning 2.如何添加
    [dictM setObject:@"lyh" forKey:@"name"];
    NSLog(@"dic %@",dictM);
    // 会将传入
    [dictM setValuesForKeysWithDictionary:@{@"age":@"20",@"height":@"1.71"}];
    NSLog(@"dic %@",dictM);
    
#warning 3.如何获取
//    NSLog(@"dic %@",[dictM objectForKey:@"name"]);
    NSLog(@"dic %@",dictM[@"name"]);

    
#warning 4.如何删除
    // 删除单个
    [dictM removeObjectForKey:@"name"];
    NSLog(@"dic %@",dictM);
    // 删除多个
//    [dictM removeObjectsForKeys:@[@"age",@"height"]];
//    NSLog(@"dic %@",dictM);


#warning 5.如何修改
    // 如果利用setObject 方法给同名的key赋值,那么新值会覆盖旧值
    
    [dictM setObject:@"180" forKey:@"age"];
    NSLog(@"dic %@",dictM);
    

#warning ⚠️注意点
    // 1. 不能使用@{}来创建一个可变的字典
//    NSMutableDictionary *dictM2 = @{@"name":@"lyh"};
//    [dictM2 setObject:@"20" forKey:@"age"];
    
    // 2. 如果是不可变字典, 那么key不能相同
    // 如果是不可变的字典, 出现了同名的key,那么后面的key对应的值 不会被保存
    // 如果是在可变的字典中, 那么后面的

    NSDictionary *dictM3 = @{@"name":@"lyh",@"name":@"lys"};
    NSLog(@"dictM3 %@",dictM3);

    
    // 可变字典重名
    NSMutableDictionary *dictM4 = [NSMutableDictionary dictionaryWithObjects:@[@"lyh",@"lys"] forKeys:@[@"name",@"name"]];
    NSLog(@"dictM4 %@",dictM4);

    
#pragma mark 字典(NSDictionary)和数组(NSArray) 的区别
    /**
     NSArray 是有序的 
     NSDictionary 是无序的
     
     NSArray 是通过下标访问元素
     NSDictionary 是通过key访问元素
     
     */
#pragma mark 创建 和 访问
    /**
     array 
     创建
     @[@"lyh",@"lys"]; (返回的是一个不可变数组)
     访问
     id a = array[1];
     赋值
     array[1] = @"lyh";
     
     dict
     创建
     @{@"name":@"lyh",@"age":@"22"};
     访问
     id a = dict[@"name"];
     赋值
     dict[@"name"] = @"lyh";
     */
    return 0;
}


上一篇 下一篇

猜你喜欢

热点阅读