作過Java語言 或者 C語言 開發的朋友應該很清楚 關鍵字map 吧,它能夠將數據以鍵值對兒的形式儲存起來,取值的時候經過KEY就能夠直接拿到對應的值,很是方便。在Objective-C語言中 詞典對象就是作這個事情的,不過在同一個詞典對象中能夠保存多個不一樣類型的數據,不像Java與C 只能保存聲明的相同類型的數據,它的關鍵字爲NSDictionary與NSMutableDictionary。閱讀過我以前文章的朋友應該從關鍵字的 結構就能夠看出這兩個的區別。很明顯前者爲不可變詞典,或者爲可變詞典。
數組
NSDictionary *dict;測試
for(NSString * akey in dict)spa
{code
//........對象
}很好用繼承
1.建立不可變詞典ci
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用鍵值對兒直接建立詞典對象,結尾必需使用nil標誌結束。開發
[NSDictionary initWithObjectsAndKeys:..] :使用鍵值對兒初始化詞典對象,結尾必需使用nil標誌結束。rem
[dictionary count]: 獲得詞典的長度單位。it
[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; }
詞典類的存在就是爲了解決在大量數據中查找方便,由於它是經過key直接找到value因此速度很快,避免一個個的遍歷尋找形成的效率低下,善用字典類會幫你的程序提速。