OC語言day08-09可變字典NSMutableDictionary

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;
}


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容