Objective-C中字典的使用方法總結

來源:互聯網
上載者:User

標籤:

在Objective-C中提供了兩個類來實現字典,即NSDictionaryNSMutableDictionary。其中,NSMutableDictionary是NSDictionary的子類,它繼承父類方法的同時又支援對資料進行插入和刪除操作,它們共同實現了以“索引值對”的方式儲存資料。

// Objective-C中實現的字典相比於其他語言而言,還有一個最大的不同:即同一個字典中可以儲存不同類型的對象。
1 NSDictionary1.1 建立不可變字典

可以使用類方法dictionaryWithObjectsAndKeys:建立並初始化字典,樣本如下:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:                              @"val1", @"key1",                              @"val2", @"key2", nil];

注意:在使用索引值對初始化字典時,“值”在前,“鍵”在後,成對出現,各個參數之間使用逗號分隔,並且最後使用nil結束。使用以上方法建立的字典記憶體分布如所示:

1.2 擷取字典大小

在執行字典操作之前,常常需要擷取字典大小,也就是確定字典中“索引值對”的數量,我們可以使用count訊息,使用方法如下:

int cnt = [dict count];

該方法會返回一個NSInteger類型的變數,我們也可以直接使用int類型的變數接收。

1.3 得到字典中所有的KEY

對字典發送keyEnumerator訊息可以返回一個枚舉對象,其中儲存了字典中所有的鍵:

NSEnumerator *enumKeys = [dict keyEnumerator];for (NSObject *obj in enumKeys){    NSLog(@"enumKey: %@", obj);}

使用“for-in”文法可以實現可枚舉對象的遍曆,以上代碼中的迴圈可以遍曆所有鍵,並且輸出:

2016-07-24 10:03:11.873 OCTest[2547:94272] enumKey: key12016-07-24 10:03:13.753 OCTest[2547:94272] enumKey: key2

注意:如果我們直接使用"for-in"文法遍曆字典對象,實際上也相當於對“鍵”的遍曆。

for (NSObject *obj in dict){    NSLog(@"key in dic: %@", obj);}

執行以上代碼的輸出為:

2016-07-24 10:10:17.590 OCTest[2667:97958] key in dic: key12016-07-24 10:10:17.590 OCTest[2667:97958] key in dic: key2
1.4 遍曆字典中的所有VALUE

可以使用擷取“鍵”類似的方法擷取字典中的“值”,只需要對字典發送objectEnumerator訊息即可:

NSEnumerator *enumValues = [dict objectEnumerator];for (NSObject *obj in enumValues){    NSLog(@"value in dic: %@", obj);}

運行結果如下:

2016-07-24 10:14:41.984 OCTest[2702:100424] value in dic: val12016-07-24 10:14:41.984 OCTest[2702:100424] value in dic: val2
1.5 根據KEY檢索VALUE

對於字典而言,最常見的操作就是尋找了,也就是根據給定的KEY,檢索對應的VALUE,方法如下:

NSObject *value = [dict objectForKey:@"key1"];if (value != nil){    NSLog(@"value in dict: %@", value);}

運行結果如下:

2016-07-24 10:20:09.012 OCTest[2736:103393] value in dict: val1

 

Objective-C中字典的使用方法總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.