1. 程式人生 > >oc知識總結三 NSDictionary、NSMutableDictionary

oc知識總結三 NSDictionary、NSMutableDictionary

注:字典是由鍵-值對組成的資料集合,他是無序的一組集合,我們通過key查詢對應的value,key通常是字串物件,在字典中,key的值必須是唯一的,而且key不能為空。

字典分為兩種:不可變字典(NSDictionary)和可變字典(NSMutableDctionary)

一、NSDictionary

1、字典的建立

(1)建立一個空字典

NSDictionary *emptyDic=[NSDictionarydictionary];

(2)建立單個物件的不可變字典

NSDictionary *singleObjectDic=[NSDictionarydictionaryWithObject:

@"庫克" forKey:@"CEO"];

(3)建立多個物件的不可變字典(顯示值後是鍵:先value後key)

NSDictionary *jobsDic=[NSDictionarydictionaryWithObjectsAndKeys:@"馬雲",@"董事長",@"馬化騰",@"首席設計師" ,@"李彥巨集",@"技術總監",nil];

(4)簡化方法建立不可變字典(格式:鍵:值)

NSDictionary *Dic=@{@"董事長":@"馬雲",@"首席設計師" :@"馬化騰"};

2、不可變字典常用的方法

(1)獲取數量

//獲取數量

 NSUInteger count = Dic.count

;

 NSLog(@"Dic的有%ld個物件",count);

輸出結果:


(2)通過key獲取對應的value物件

// 根據keyvalue

NSString *name=[jobsDic objectForKey:@"董事長"];

NSLog(@"董事長的名字是:%@",name);

輸出結果:


(3)獲取所有鍵的集合

allKeys

(4)獲取所有值的集合

allValues

3、遍歷字典

程式碼示例:

//一般key是字串,value可以是字串,陣列,字典

//第一種遍歷字典的方式:通過找keyvalueobjectForKey

        for(NSString

 *key1 in jobsDic ){

            NSString *value1=[jobsDic objectForKey:key1];

             NSLog(@"key=%@,value=%@",key1,value1);

        }

NSLog(@"^-^__________^-^");

//第二中遍歷字典的方式

        NSArray *keys=[compay1 allKeys];

        for(NSString *key in keys){

            NSString *value=[compay1 objectForKey:key];

            NSLog(@"key=%@,value=%@",key,value);

        }

NSLog(@"^-^__________^-^");

//第三種遍歷字典的方式(無key

        NSArray *values=[compay1 allValues];

        for(NSString *value in values){

            NSLog(@"value=%@",value);

        }

輸出結果:


二、NSMutableDctionary

1、簡介

可變字典(NSMutableDictionary)繼承自nsDictionary。

2、建立可變字典

(1)建立一個空字典

//方式一:建立一個空的字典

NSMutableDictionary *emptyDic=[NSMutableDictionarydictionary];

(2)使用例項化方法建立一個可變字典

//方式二:使用例項化方法建立一個可變字典

NSMutableDictionary *mutDic = [[NSMutableDictionaryalloc]init];

(3)使用一個不可變的字典建立一個可變字典

//方式三:使用一個不可變字典建立一個可變字典

NSMutableDictionary *mutDic = [[NSMutableDictionaryalloc]initWithDictionary:emptyDic];

(4)使用特定的不可變陣列設定可變字典的鍵值對來建立一個可變字典

//方式四:使用特定的不可變陣列設定可變字典的鍵值對建立一個可變字典

NSMutableDictionary *mutDic = [[NSMutableDictionary alloc]initWithObjects:array forKeys:array1];

2、可變字典的常用方法

(1)為空字典新增物件:setObject:  forKey:

[emptyDic setObject:@"趙總"forKey:@"總經理"];

[emptyDic setObject:@"馬總"forKey:@"董事長"];

[emptyDic setObject:@"鄭總"forKey:@"首席技術官"];

[emptyDic setObject:@"王府井"forKey:@"架構師"];

[emptyDic setObject:@"李雪陽"forKey:@"技術總監"];


(2)根據key刪除物件:removeObjectForKey:

[emptyDic removeObjectForKey:@"架構師"];

(3)修改物件的值:setObject: forKey:

[emptyDic setObject:@"abc"forKey:@"技術總監"];

(4)刪除多個物件:removeObjectsForKeys

NSArray *deleteKey=@[@"總經理",@"董事長",@"首席技術官"];

[emptyDic removeObjectsForKeys:deleteKey];

(5)刪除全部物件

//刪除全部物件

[emptyDic removeAllObjects];

3、可變字典示例 程式碼部分:

// 建立一個可變的字典NSMutableDictionary,繼承自NSDictionary

//方式一:建立一個空的字典

NSMutableDictionary *emptyDic=[NSMutableDictionarydictionary];

//為空字典新增物件

        [emptyDic setObject:@"趙總"forKey:@"總經理"];

        [emptyDic setObject:@"馬總"forKey:@"董事長"];

        [emptyDic setObject:@"鄭總"forKey:@"首席技術官"];

        [emptyDic setObject:@"王府井"forKey:@"架構師"];

        [emptyDic setObject:@"李雪陽"forKey:@"技術總監"];

//字典中的資料是無序的

        for(NSString *keyin emptyDic){

            NSString *value=[emptyDic objectForKey:key];

            NSLog(@"職位:%@,人員是:%@",key,value);

        }

NSLog(@"^-^__________^-^");

//根據key刪除物件(removeObjectForKey

        [emptyDic removeObjectForKey:@"架構師"];

        for(NSString *keyin emptyDic){

            NSString *value=[emptyDic objectForKey:key];

            NSLog(@"職位:%@,人員是:%@",key,value);

        }

NSLog(@"^-^__________^-^");

//與陣列不同,setObject不僅可以用來設定物件,也可修改(setObject

        [emptyDic setObject:@"abc"forKey:@"技術總監"];

        for(NSString *keyin emptyDic){

            NSString *value=[emptyDic objectForKey:key];

            NSLog(@"職位:%@,人員是:%@",key,value);

        }

NSLog(@"^-^__________^-^");

//刪除多個物件(removeObjectsForKeys

        NSArray *deleteKey=@[@"總經理",@"董事長",@"首席技術官"];

        [emptyDic removeObjectsForKeys:deleteKey];

for(NSString *keyin emptyDic){

            NSString *value=[emptyDic objectForKey:key];

            NSLog(@"職位:%@,人員是:%@",key,value);

        }

NSLog(@"^-^__________^-^");

        //刪除全部物件

        [emptyDic removeAllObjects];


輸出結果: