20150612_OC之字典NSDictionary及NSMutableDictionary

//NSDictionary

//創建一個不可變字典對象


//NSMutableDictionary

//創建一個可變字典對象


//字典中對象都是鍵值對:key-->value

//字典中的鍵值對是沒有順序的

//字典中的key是唯一的,但是value是不唯一的,一個value可以有多個key

//
//  main.m
//  IOS150612_ObjectiveC_Dictionary
//
//  Created by Peng Junlong on 15/6/12.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>

//NSDictionary
//創建一個不可變字典對象

//NSMutableDictionary
//創建一個可變字典對象

//字典中對象都是鍵值對:key-->value
//字典中的鍵值對是沒有順序的
//字典中的key是唯一的,但是value是不唯一的,一個value可以有多個key

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //用Value及key構建字典對象
        NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"four",@"4",@"three",@"3",@"two",@"2",@"one",@"1", @"four",@"5",@"two",@"6",nil];//前面的是value,後面的是key
        NSLog(@"%@",dic);
        
        //創建常量字典對象
        NSDictionary *dic2 = @{@"4":@"four",@"3":@"three",@"2":@"two"};
        NSLog(@"dic2 = %@",dic2);
        
        //用傳入的字典對象創建字典對象
        NSDictionary *dic3 = [[NSDictionary alloc] initWithDictionary:dic];
        NSLog(@"dic3 = %@",dic3);
        
        //用傳入的value數組及key數組創建字典對象,個數一一對應
        NSDictionary *dic4 = [[NSDictionary alloc] initWithObjects:@[@"four",@"three",@"two"] forKeys:@[@"4",@"3",@"2"]];
        NSLog(@"dic4 = %@",dic4);
        
        //創建一個空的字典對象
        NSDictionary *dic5 = [[NSDictionary alloc] init];
        NSLog(@"dic5 = %@",dic5);
        
        //類方法創建字典對象
        //跟initWithObjectsAndKeys:對應
        NSDictionary *dic6 = [NSDictionary dictionaryWithObjectsAndKeys:@"four",@"4",@"three",@"3",@"two",@"2",@"one",@"1", nil];
        NSLog(@"dic6 = %@",dic6);
        
        //跟initWithObjects:forKeys:對應
        NSDictionary *dic7 = [NSDictionary dictionaryWithObjects:@[@"four",@"three",@"two"] forKeys:@[@"4",@"3",@"2"]];
        NSLog(@"dic7 = %@",dic7);
        
        //計算字典中鍵值對的個數
        NSUInteger len = [dic7 count];
        NSLog(@"Len = %ld",len);
        
        //獲取key對應的值
        id value = [dic objectForKey:@"2"];
        NSLog(@"value = %@",value);
        
        //獲取所有的key,返回一個數組
        NSArray *keys = [dic allKeys];
        NSLog(@"keys = %@",keys);
        
        //獲取value對應的多有的key
        NSArray *keys2 = [dic allKeysForObject:@"four"];
        NSLog(@"keys2 = %@",keys2);
        
        //獲取字典中多有的值
        NSArray *values = [dic allValues];
        NSLog(@"value = %@",values);
        
        //判斷兩個字典是否相等
        BOOL result = [dic isEqualToDictionary:dic2];
        NSLog(@"result = %d",result);
        
        //遍歷字典,實質上是遍歷字典的key
        //枚舉器法,枚舉key
        NSEnumerator *keysArray = [dic keyEnumerator];
        for (id item in keysArray) {
            NSLog(@"%@:%@",item, [dic objectForKey:item]);
        }
        
        //快速枚舉法,枚舉的是key
        for (id key in dic) {
            NSLog(@"%@:%@",key, [dic objectForKey:key]);
        }
        
        //只遍歷字典中的值,不能查找到key,因爲value對應的不一定是唯一的
        NSEnumerator *valueArray = [dic objectEnumerator];
        for (id item in valueArray) {
            NSLog(@"value = %@",item);
        }
        
        /****************	Mutable Dictionary	****************/
        //可變字典操作
        //構造指定容量大小的字典對象
        NSMutableDictionary *mulDict = [[NSMutableDictionary alloc] initWithCapacity:20];
        NSLog(@"mulDict = %@",mulDict);
        
        //刪除指定的key對應的鍵值對
        NSMutableDictionary *mulDict2 = [NSMutableDictionary dictionaryWithDictionary:@{@"4":@"four",@"3":@"three",@"2":@"two"}];
        [mulDict2 removeObjectForKey:@"3"];
        NSLog(@"%mulDict2 = %@",mulDict2);
        
        //添加(或者修改)鍵值對,如果當前字典中已經有了這個key,則對這個key進行修改,若沒有就是添加
        [mulDict2 setObject:@"seven" forKey:@"2"];  //  修改
        [mulDict2 setObject:@"seven" forKey:@"3"];  //  添加
        NSLog(@"%mulDict2 = %@",mulDict2);
        
        //將傳入的字典中的鍵值對添加到字典中,若有相同的鍵,則起到修改字典中相對應鍵的鍵值對
        [mulDict2 addEntriesFromDictionary:dic3];
        NSLog(@"%mulDict2 = %@",mulDict2);
        
        //刪除所有的鍵值對,即清空字典對象
//        [mulDict2 removeAllObjects];
//        NSLog(@"%mulDict2 = %@",mulDict2);
        
        //刪除key數組對應的所有鍵值對
        [mulDict2 removeObjectsForKeys:@[@"2",@"4",@"6"]];
        NSLog(@"%mulDict2 = %@",mulDict2);
        
        //重置字典對象
        [mulDict2 setDictionary:dic];
        NSLog(@"%mulDict2 = %@",mulDict2);
        
    }
    return 0;
}


發佈了71 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章