oc知識總結三 NSDictionary、NSMutableDictionary
注:字典是由鍵-值對組成的資料集合,他是無序的一組集合,我們通過key查詢對應的value,key通常是字串物件,在字典中,key的值必須是唯一的,而且key不能為空。
字典分為兩種:不可變字典(NSDictionary)和可變字典(NSMutableDctionary)
一、NSDictionary
1、字典的建立
(1)建立一個空字典
NSDictionary *emptyDic=[NSDictionarydictionary];
(2)建立單個物件的不可變字典NSDictionary *singleObjectDic=[NSDictionarydictionaryWithObject:
NSDictionary *jobsDic=[NSDictionarydictionaryWithObjectsAndKeys:@"馬雲",@"董事長",@"馬化騰",@"首席設計師" ,@"李彥巨集",@"技術總監",nil];
(4)簡化方法建立不可變字典(格式:鍵:值)NSDictionary *Dic=@{@"董事長":@"馬雲",@"首席設計師" :@"馬化騰"};
2、不可變字典常用的方法(1)獲取數量
//獲取數量
NSUInteger count = Dic.count
NSLog(@"Dic的有%ld個物件",count);
輸出結果:
(2)通過key獲取對應的value物件
// 根據key取value
NSString *name=[jobsDic objectForKey:@"董事長"];
NSLog(@"董事長的名字是:%@",name);
輸出結果:
(3)獲取所有鍵的集合
allKeys
(4)獲取所有值的集合
allValues
3、遍歷字典
程式碼示例:
//一般key是字串,value可以是字串,陣列,字典
//第一種遍歷字典的方式:通過找key取value(objectForKey)
for(NSString
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)刪除多個物件:removeObjectsForKeysNSArray *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];
輸出結果: