NSMutableDictionary - 可變字典


 * 兩個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];

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM