版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2017.08.28 |
前言
NSMutableDictionary
是可變字典,相對NSDictionary
來說呼盆,它是可變的年扩,它的可變性可以參考NSMutableArray
數(shù)組,但是它與數(shù)組還是有很大不同访圃,盡管他們都屬于集合類厨幻,下面這幾篇我們繼續(xù)來將一下基礎(chǔ)類的知識。還是老規(guī)矩從整體到局部,從淺入深進行講解况脆,謝謝大家饭宾。感興趣的可以參考我寫的上篇幾篇。
1. NSMutableDictionary簡單細說(一)—— 整體了解
2. NSMutableDictionary簡單細說(二)—— 創(chuàng)建和初始化
一格了、- (void)setObject:(ObjectType)anObject forKey:(id<NSCopying>)aKey;
該方法的作用是:將給定的鍵值對加入到字典中看铆。
下面看一下參數(shù)和返回值
-
anObject
:aKey的值。 通過字典維護對象的強引用盛末。如果anObject
為零弹惦,則引發(fā)NSInvalidArgumentException
異常。 如果您需要在字典中表示一個nil值悄但,請使用NSNull
棠隐。 -
aKey
:鍵對應的值。 鍵被復制(使用copyWithZone :
鍵必須符合NSCopying
協(xié)議)算墨。 如果aKey已經(jīng)存在于字典中宵荒,則anObject將占有這個鍵對應的值。如果key為空則會拋出NSInvalidArgumentException
異常净嘀。
看示例代碼
- (void)demoSetObject
{
NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
[dictM setObject:@"1" forKey:@"One"];
NSLog(@"dictM = %@", dictM);
}
看輸出結(jié)果
2017-08-28 23:05:58.680 JJOC[6185:156797] dictM = {
One = 1;
}
結(jié)論:字典增加給定的一個鍵值對报咳。
二、- (void)setObject:(ObjectType)obj forKeyedSubscript:(id<NSCopying>)key;
該方法的作用:與方法一一樣挖藏,都是在字典中加入給定的鍵值對暑刃。
看一下參數(shù):
-
obj
:aKey的值。 通過字典維護對象的強烈引用膜眠。傳遞nil將會使與aKey相對應的任何對象從字典中刪除岩臣。 -
key
:值的鍵。 鍵被復制(使用copyWithZone :
宵膨,鍵必須符合NSCopying
協(xié)議)架谎。 如果aKey已經(jīng)存在于字典中,則anObject將占有一席之地辟躏。如果aKey為零谷扣,則引發(fā)NSInvalidArgumentException
異常。
還要注意:
- 此方法與
setObject:forKey:
方法具有相同的行為捎琐。您不應該直接調(diào)用此方法会涎。 而是使用下標設(shè)置鍵的對象時調(diào)用此方法。
id value = @"someValue";
mutableDictionary[@"someKey"] = value;
結(jié)論:與方法一作用相同瑞凑,區(qū)別是這個不能顯示的調(diào)用末秃。
三、- (void)setValue:(ObjectType)value forKey:(NSString *)key;
該方法的作用就是:向字典中加入給定的鍵值對籽御。
看一下參數(shù):
-
value
:鍵對應的值练慕。 -
key
:值對應的鍵惰匙。 請注意,使用鍵值編碼時贺待,鍵必須是字符串徽曲。
還要注意:
- 此方法使用
setObject:forKey :
,將值和鍵添加到字典麸塞,除非值為nil,否則該方法會嘗試使用removeObjectForKey:
刪除鍵涧衙。
看示例代碼
- (void)demoSetValue
{
NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
[dictM setValue:@"1" forKey:@"One"];
NSLog(@"dictM = %@", dictM);
}
看輸出結(jié)果
2017-08-28 23:18:54.180 JJOC[6504:167561] dictM = {
One = 1;
}
結(jié)論:為字典加給定的鍵值對哪工。
四、- (void)addEntriesFromDictionary:(NSDictionary<KeyType,ObjectType> *)otherDictionary;
該方法的作用是:根據(jù)已知字典弧哎,生成新的字典雁比。
要注意:
- 來自
otherDictionary
的每個值對象在被添加到接收字典之前被發(fā)送一個保留消息。 相反撤嫩,每個關(guān)鍵對象都被復制(使用copyWithZone:
-keys必須符合NSCopying
協(xié)議)偎捎,并將該副本添加到接收字典中。 - 如果兩個字典都包含相同的密鑰序攘,則該密鑰的接收字典的先前的值對象將被發(fā)送一個釋放消息茴她,并且新的值對象取而代之。
看示例代碼
- (void)demoAddEntriesFromDictionary
{
NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
[dictM setObject:@1 forKey:@"One"];
[dictM setObject:@3 forKey:@"three"];
NSDictionary *givenDict = @{@"One" : @100, @"Two" : @2, @"Three" : @3};
[dictM addEntriesFromDictionary:givenDict];
NSLog(@"dictM = %@", dictM);
}
看輸出結(jié)果
2017-08-28 23:28:48.706 JJOC[6819:174851] dictM = {
One = 100;
Three = 3;
Two = 2;
three = 3;
}
結(jié)論:根據(jù)給定字典實例化新的可變字典程奠。
五丈牢、- (void)setDictionary:(NSDictionary<KeyType,ObjectType> *)otherDictionary;
該方法作用是:將接收字典的內(nèi)容設(shè)置為給定字典中的條目。
還要注意:
- 所有條目從接收字典中刪除(使用
removeAllObjects
)瞄沙,然后將來自otherDictionary
的每個條目添加到接收字典中己沛。
看實例代碼
- (void)demoSetDictionary
{
NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
[dictM setObject:@1 forKey:@"One"];
[dictM setObject:@3 forKey:@"three"];
NSDictionary *givenDict = @{@"One" : @100, @"Two" : @2, @"Three" : @3};
[dictM setDictionary:givenDict];
NSLog(@"dictM = %@", dictM);
}
看輸出結(jié)果
2017-08-28 23:32:46.023 JJOC[6991:178818] dictM = {
One = 100;
Three = 3;
Two = 2;
}
結(jié)論:根據(jù)給定字典實例化新的字典。
后記
未完距境,待續(xù)~~~