日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Foundation框架: 9.OC中的集合类之四 - NSMutableDictionary的基本认识

發(fā)布時(shí)間:2024/8/24 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Foundation框架: 9.OC中的集合类之四 - NSMutableDictionary的基本认识 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前面我們講了NSDictionary, 現(xiàn)在我們來(lái)講一下它的子類(lèi)NSMutableDictionary, 這個(gè)NSMutableDictionary和前面的NSMutableString, NSMutableArray是一樣的原理, 都是可變的, 下面讓我們來(lái)看看它是怎么運(yùn)作的:





例子:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {NSMutableDictionary *dic = [NSMutableDictionary dictionary];[dic setObject:@"jim" forKey:@"name"];[dic setObject:@"18" forKey:@"age"];id obj = dic[@"name"];id obj2 = dic[@"age"];NSLog(@"obj = %@, obj2 = %@", obj, obj2);return 0; }
打印出來(lái)的結(jié)果:
2015-02-05 23:18:15.963 9.NSMutableDictionary[4210:303] obj = jim, obj2 = 18



在前面我說(shuō)過(guò), 一個(gè)鍵就只能對(duì)應(yīng)一個(gè)值, 那如果有一個(gè)鍵對(duì)應(yīng)多個(gè)值會(huì)發(fā)生什么事呢? 下面來(lái)看看:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {NSMutableDictionary *dic = [NSMutableDictionary dictionary];[dic setObject:@"jim" forKey:@"name"];[dic setObject:@"18" forKey:@"age"];[dic setObject:@"30" forKey:@"age"];id obj = dic[@"name"];id obj2 = dic[@"age"];NSLog(@"obj = %@, obj2 = %@", obj, obj2);return 0; }
打印出來(lái)的結(jié)果:
2015-02-05 23:20:12.871 9.NSMutableDictionary[4220:303] obj = jim, obj2 = 30
從上面的結(jié)果, 我們可以看到, 鍵不變, 改變的是值, 其實(shí)這是沒(méi)錯(cuò)的, 無(wú)論是在NSDictionary中還是NSMutableDictionary里, 只要是有相同的鍵值對(duì), 在后面的值會(huì)覆蓋掉前面的值.





當(dāng)然, 有添加那就肯定有刪除的方法, 比如:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {NSMutableDictionary *dic = [NSMutableDictionary dictionary];[dic setObject:@"jim" forKey:@"name"];[dic setObject:@"18" forKey:@"age"];[dic removeObjectForKey:@"name"];NSLog(@"%@", dic);return 0; }
打印出來(lái)的結(jié)果:
2015-02-05 23:23:36.041 9.NSMutableDictionary[4233:303] {age = 30; }





遍歷方法:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {NSDictionary *dic = @{@"name" : @"rose", @"age" : @"20"};NSArray *keys = [dic allKeys];for(int i = 0; i < dic.count; i++){NSString *key = keys[i];NSString *objes = dic[key];NSLog(@"%@ --- %@", key, objes);}return 0; }
打印出來(lái)的結(jié)果:

2015-02-05 23:37:44.102 9.NSMutableDictionary[4272:303] name --- rose 2015-02-05 23:37:44.104 9.NSMutableDictionary[4272:303] age --- 20
里面的語(yǔ)法之前都有講過(guò), 這里就不多講了, 想知道的話(huà), 回去翻翻我之前的博文吧~~





block遍歷:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {NSDictionary *dic = @{@"name" : @"rose",@"age" : @"20",@"age1" : @"20",@"age2" : @"20"};[dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {NSLog(@"%@ --- %@", key, obj);}];return 0; }
打印出來(lái)的結(jié)果:

2015-02-06 12:57:48.647 9.NSMutableDictionary[4473:303] age --- 20 2015-02-06 12:57:48.648 9.NSMutableDictionary[4473:303] age1 --- 20 2015-02-06 12:57:48.649 9.NSMutableDictionary[4473:303] age2 --- 20 2015-02-06 12:57:48.649 9.NSMutableDictionary[4473:303] name --- rose
看完這個(gè)block遍歷, 你應(yīng)該就明白我為什么會(huì)說(shuō)Dictionary是沒(méi)有順序了, 回想一下我們的NSArray遍歷, 在block的遍歷中, 我們看到一個(gè)Index的一個(gè)參數(shù), 而在NSDictionary中, 壓根就沒(méi)有這個(gè)參數(shù), 所以我一直強(qiáng)調(diào), Dictionary是沒(méi)有順序的.





這里補(bǔ)充一個(gè)NSDictionary的知識(shí)點(diǎn), 一個(gè)Dictionary允許有多個(gè)相同的值存在, 但不允許有多個(gè)相同的鍵存在, 下面我們來(lái)看看:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {NSDictionary *dic = @{@"name" : @"rose",@"age" : @"20",@"age1" : @"20",@"age2" : @"20"};NSArray *keys = [dic allKeys];for(int i = 0; i < dic.count; i++){NSString *key = keys[i];NSString *objes = dic[key];NSLog(@"%@ --- %@", key, objes);}return 0; }
打印出來(lái)的結(jié)果:

2015-02-06 12:17:34.997 9.NSMutableDictionary[4392:303] age --- 20 2015-02-06 12:17:34.999 9.NSMutableDictionary[4392:303] age1 --- 20 2015-02-06 12:17:35.000 9.NSMutableDictionary[4392:303] age2 --- 20 2015-02-06 12:17:35.000 9.NSMutableDictionary[4392:303] name --- rose
這里同樣說(shuō)明了另一個(gè)問(wèn)題, 就是NSDictionary是沒(méi)有順序的, 看看例子看看打印出來(lái)的結(jié)果就知道了.





總結(jié):

集合

1.NSArray\NSMutableArray

?* 有序

?* 快速創(chuàng)建(不可變):@[obj1, obj2, obj3]

?* 快速訪(fǎng)問(wèn)元素:數(shù)組名[i]

?

2.NSSet\NSMutableSet

?* 無(wú)序

?

3.NSDictionary\NSMutableDictionary

?* 無(wú)序

?* 快速創(chuàng)建(不可變):@{key1 : value1,? key2 : value2}

?* 快速訪(fǎng)問(wèn)元素:字典名[key]




好了, 這次就講到這里, 下次我們繼續(xù)~~


轉(zhuǎn)載于:https://www.cnblogs.com/iOSCain/p/4282804.html

總結(jié)

以上是生活随笔為你收集整理的Foundation框架: 9.OC中的集合类之四 - NSMutableDictionary的基本认识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。