1. 程式人生 > >iOS開發之NSDictionary與NSMutableDictionary

iOS開發之NSDictionary與NSMutableDictionary

NSDictionary不可變字典

1、[NSDictionary dictionaryWithObjectsAndKeys:..]: 使用鍵值對兒直接建立字典物件,結尾必需使用nil標誌結束。
2、[NSDictionary initWithObjectsAndKeys:..]:使用鍵值對兒初始化字典物件,結尾必需使用nil標誌結束。
3、[dictionary count]: 得到字典的長度單位。
4、[dictionary keyEnumerator]: 將字典的所有KEY儲存在NSEnumerator中,NSEnumerator很像Java語言中的迭代器,使用快速列舉可以遍歷字典中所有儲存KEY值。
5、[dictionary objectEnumerator]

: 將字典的所有value儲存在NSEnumerator中,用法和上面差不多可用來遍歷KEY對應儲存的Value值。
6、[dictionary objectForKey:key]: 通過傳入KEY物件可以拿到當前KEY對應儲存的值。


使用示例:
建立字典

NSDictionary *dic = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];

建立多個字典

NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:
                              @"xbyvalue1"
, @"xbykey1", @"xbyvalue2", @"xbykey2", @"xbyvalue3", @"xbykey3", @"xbyvalue4", @"xbykey4", nil];

根據現有的字典建立字典

NSDictionary *dic3 = [NSDictionary dictionaryWithDictionary:dic2];

根據key獲取value

NSDictionary *dic =[dic3 objectForKey:@"key3"];

獲取字典數量

NSInteger count = dic3.count;

所有的鍵集合

NSArray *keys = [dic3 allKeys];        

所有值集合

NSArray *values = [dic3 allValues];

NSMutableDictionary可變字典

NSMutableDictionary 是NSDictionary的子類,所以繼承了NSDictionary的方法。
1、[NSMutableDictionary dictionaryWithCapacity:5]: 建立一個可變字典初始指定它的長度為5.,動態的新增資料如果超過5這個詞典長度會自動增加,所以不用擔心陣列越界,推薦用這種方式。
2、[NSMutableDictionary initWithCapacity:5]:只是初始化一個字典的長度為5。
3、[dictionary setObject:@"value" forKey:@"key"]:向可變的字典動態的新增資料 。如果字典中存在這個KEY的資料則直接替換這個KEY的值。
4、[dictionary removeAllObjects..]: 刪除掉詞典中的所有資料。
5、[dictionary removeObjectForKey..]:刪除掉詞典中指定KEY的資料 。


使用示例
建立可變字典

NSMutableDictionary *mutableDic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:
                                           @"xbyvalue1", @"xbykey1",
                                           @"xbyvalue2", @"xbykey2",
                                           @"xbyvalue3", @"xbykey3",
                                           @"xbyvalue4", @"xbykey4", 
                                            nil];

新增現有的字典資料

[mutableDic addEntriesFromDictionary:dic3];

新增新的鍵值物件

[mutableDic setValue:@"set1" forKey:@"setKey1"];

以新的字典資料覆蓋舊的字典資料

[mutableDic setDictionary:dic2];

根據key刪除value

[mutableDic removeObjectForKey:@"key1"];

快速遍歷

for(id key in mutableDic) {
  NSLog(@"key :%@  value :%@", key, [mutableDic objectForKey:key]);
}

列舉遍歷

NSEnumerator *enumerator = [mutableDic keyEnumerator];
id key = [enumerator nextObject];
while (key) {
  NSLog(@"enumerator :%@", [mutableDic objectForKey:key]);
  key = [enumerator nextObject];
}   

根據key陣列刪除元素

[mutableDic removeObjectsForKeys:keys];      

刪除所有元素

[mutableDic removeAllObjects];