* 兩個NSMutableDictionary合並成一個NSMutableDictionary
解決方案:
NSMutableDictionary *targetMutableDictionary = [mutableDictionary1 copy];
[targetMutableDictionary addEntriesFromDictionary:mutableDictionary2];
/*------------------------------------創建可變字典------------------------------------*/
//創建
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
//添加字典
[dictionary setObject:@"One" forKey:@"1"];
[dictionary setObject:@"Two" forKey:@"2"];
[dictionary setObject:@"Three" forKey:@"3"];
[dictionary setObject:@"Four" forKey:@"4"];
NSLog(@"dictionary:%@",dictionary);
//刪除指定的字典
[dictionary removeObjectForKey:@"3"];
NSLog(@"dictionary:%@",dictionary);
========================================================================
NSDictionary *dict;
for(NSString * akey in dict)
{
//........
}很好用
1.創建不可變詞典
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用鍵值對兒直接創建詞典對象,結尾必需使用nil標志結束。
[NSDictionary initWithObjectsAndKeys:..] :使用鍵值對兒初始化詞典對象,結尾必需使用nil標志結束。
[dictionary count]: 得到詞典的長度單位。
[dictionary keyEnumerator]: 將詞典的所有KEY儲存在NSEnumerator中,NSEnumerator很像Java語言 中的迭代器,使用快速枚舉可以遍歷詞典中所有儲存KEY值。
[dictionary objectEnumerator]: 將詞典的所有value儲存在NSEnumerator中,用法和上面差不多可用來遍歷KEY對應儲存的Value值。
[dictionary objectForKey:key]: 通過傳入KEY對象可以拿到當前KEY對應儲存的值
#import <UIKit/UIKit.h> #import "MyClass.h" int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //添加我們的測試代碼 NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"雨松MOMO",@"name",@"15810463139",@"number", nil]; //得到詞典的數量 int count = [dictionary count]; NSLog(@"詞典的數量為: %d",count); //得到詞典中所有KEY值 NSEnumerator * enumeratorKey = [dictionary keyEnumerator]; //快速枚舉遍歷所有KEY的值 for (NSObject *object in enumeratorKey) { NSLog(@"遍歷KEY的值: %@",object); } //得到詞典中所有Value值 NSEnumerator * enumeratorValue = [dictionary objectEnumerator]; //快速枚舉遍歷所有Value的值 for (NSObject *object in enumeratorValue) { NSLog(@"遍歷Value的值: %@",object); } //通過KEY找到value NSObject *object = [dictionary objectForKey:@"name"]; if (object != nil) { NSLog(@"通過KEY找到的value是: %@",object); } int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; }
2.創建可變詞典對象
NSMutableDictionary 是NSDictionary的子類,所以繼承了NSDictionary的方法。
[NSMutableDictionary dictionaryWithCapacity:10] : 創建一個可變詞典初始指定它的長度為10.,動態的添加數據如果超過10這個詞典長度會自動增加,所以不用擔心數組越界。推薦用這種方式
[NSMutableDictionary initWithCapacity:10] :只是初始化一個詞典的長度為10。
[dictionary setObject:@"雨松MOMO" forKey:@"name"] :向可變的詞典動態的添加數據 ,這里的key是name ,值是雨松MOMO。如果詞典中存在這個KEY的數據則直接替換這個KEY的值。(易混的地方,慎重!)
[dictionary removeAllObjects..] : 刪除掉詞典中的所有數據。
[dictionary removeObjectForKey..] :刪除掉詞典中指定KEY的數據 。
#import <UIKit/UIKit.h> #import "MyClass.h" int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //添加我們的測試代碼 //創建詞典對象,初始化長度為10 NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:10]; //向詞典中動態添加數據 [dictionary setObject:@"雨松MOMO" forKey:@"name"]; [dictionary setObject:@"15810463139" forKey:@"number"]; //通過KEY找到value NSObject *object = [dictionary objectForKey:@"name"]; if (object != nil) { NSLog(@"通過KEY找到的value是: %@",object); } int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; }
=====================================================================
//創建不可改變的詞典 NSDictionary * dictionary; dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"good lucky",@"why",@"bye bye",@"how",nil]; //里面的元素個數是奇數(不包括最后的 nil)的話是不可以的,偶數才行,因為是 id key 一組一組對應的 //輸出詞典的數量 NSLog(@"詞典的數量= %lu",[dictionary count]); /*得到詞典中所有的鍵值的過程 NSEnumerator 用來遍歷集合中每一處索引的對象*/
//*******************************遍歷數據字典 //先得到里面所有的鍵值 objectEnumerator得到里面的對象 keyEnumerator得到里面的鍵值 NSEnumerator * enumerator = [dictionary keyEnumerator];//把keyEnumerator替換為objectEnumerator即可得到value值(1) //定義一個不確定類型的對象 id object; //遍歷輸出 while(object = [enumerator nextObject]) { NSLog(@"鍵值為:%@",object); //在這里我們得到的是鍵值,可以通過(1)得到,也可以通過這里得到的鍵值來得到它對應的value值 //通過NSDictionary對象的objectForKey方法來得到 //其實這里定義objectValue這個對象可以直接用NSObject,因為我們已經知道它的類型了,id在不知道類型的情況下使用 id objectValue = [dictionary objectForKey:object]; if(objectValue != nil) { NSLog(@"%@所對應的value是 %@",object,objectValue); } } //*******************************遍歷數據字典 //創建可改變的詞典 它是動態的 //需要我們初始化一個空間大小,用dictionaryWithCapacity NSMutableDictionary * mutableDictionary = [NSMutableDictionary dictionaryWithCapacity:5]; //這里我們給的空間大小是5,當添加的數據超過的時候,它的空間大小會自動擴大 //添加數據,注意:id key 是成對出現的 [mutableDictionary setObject:@"good lucky" forKey:@"why"]; [mutableDictionary setObject:@"bye bye" forKey:@"how"]; //輸出 不用遍歷就得到鍵值和value的方法,allKeys和allValues NSLog(@"輸出所有鍵值=%@",[mutableDictionary allKeys]); NSLog(@"輸出所有的value=%@",[mutableDictionary allValues]); //動態體現在可以動態的添加數據 現在修改鍵值是why的value值, //然后在打印就會發現value是改變了,但是NSDictionary卻不可以修改 [mutableDictionary setObject:@"good" forKey:@"why"]; NSLog(@"輸出所有鍵值=%@",[mutableDictionary allKeys]); NSLog(@"輸出所有的value=%@",[mutableDictionary allValues]); //動態刪除 //刪除指定鍵值的數據 [mutableDictionary removeObjectForKey:..]; //刪除所有數據 [mutableDictionary removeAllObjects];