Objective-C文法之詞典對象的那些事兒(八)

來源:互聯網
上載者:User

Objective-C文法之詞典對象的那些事兒

雨松MOMO原創文章如轉載,請註明:轉載至我的獨立網域名稱部落格雨松MOMO程式研究院,原文地址:http://www.xuanyusong.com/archives/421


      做過Java語言或者 C語言開發的朋友應該很清楚關鍵字map 吧,它可以將資料以索引值對兒的形式儲存起來,取值的時候通過KEY就可以直接拿到對應的值,非常方便。在Objective-C語言中詞典對象就是做這個事情的,不過在同一個詞典對象中可以儲存多個不同類型的資料,不像JavaC只能儲存聲明的相同類型的資料,它的關鍵字為NSDictionaryNSMutableDictionary。閱讀過我之前文章的朋友應該從關鍵字的結構就可以看出這兩個的區別。很明顯前者為不可變詞典,或者為可變詞典。

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.建立可變詞典對象

NSMutableDictionaryNSDictionary的子類,所以繼承了NSDictionary的方法。

[NSMutableDictionary dictionaryWithCapacity:10] :建立一個可變詞典初始指定它的長度為10.,動態添加資料如果超過10這個詞典長度會自動增加,所以不用擔心數組越界。

[NSMutableDictionary initWithCapacity:10]  :只是初始化一個詞典的長度為10

[dictionary setObject:@"雨松MOMO" forKey:@"name"] :向可變的詞典動態添加資料,這裡的keyname值是雨松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所以速度很快,避免一個個的遍曆尋找造成的效率低下,善用字典類會幫你的程式提速噢。哇哢哢~ 晚安各位盆友們~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.