最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS中setValue和setObject的區(qū)別詳解

 更新時間:2017年02月07日 11:49:20   作者:李永吉  
setObject:ForKey: 是NSMutableDictionary特有的;setValue:ForKey:是KVC的主要方法。接下來通過本文給大家分享iOS中setValue和setObject的區(qū)別,需要的朋友參考下

網(wǎng)上關(guān)于setValue和setObject的區(qū)別的文章很多,說的并不準(zhǔn)確,首先我們得知道:

setObject:ForKey: 是NSMutableDictionary特有的;setValue:ForKey:是KVC的主要方法

話不多說,上代碼:

- (void)viewDidLoad { 
 [super viewDidLoad]; 
 //setObject和setvalue的區(qū)別 
 NSMutableDictionary *dic = [NSMutableDictionary dictionary]; 
 NSMutableArray *array = [NSMutableArray array]; 
 [array insertObject:@"1" atIndex:0]; 
 [array insertObject:@"2" atIndex:1]; 
 [dic setObject:[NSNull null] forKey:@"haha"]; 
 [dic setObject:[NSNull null] forKey:array]; 
 [dic setObject:[NSNull null] forKey:[NSNull null]]; 
 [dic setObject:@1 forKey:@""]; 
 [dic setObject:@"" forKey:@1]; 
 [dic setObject:nil forKey:@""]; 
 [dic setObject:@"" forKey:nil]; 
 NSLog(@"dic:%@",dic); 
 //setobject中的key和value可以為除了nil外的任何對象 
 NSLog(@"*****************"); 
 [dic removeAllObjects]; 
 NSLog(@"dic:%@",dic); 
 [dic setValue:[NSNull null] forKey:@"haha"]; 
 [dic setValue:[NSNull null] forKey:array]; 
 [dic setValue:[NSNull null] forKey:[NSNull null]]; 
 [dic setValue:@1 forKey:@""]; 
 [dic setValue:@"" forKey:@1]; 
 [dic setValue:nil forKey:@""]; 
 [dic setValue:@"" forKey:nil]; 
 [dic setValue:@"" forKey:@"hehe"]; 
 [dic setValue:array forKey:@""]; 
 NSLog(@"dic2:%@",dic); 
 //setValue中的KEY只能為字符串 value可以為nil也可以為空對象[NSNull null] 
} 

程序崩潰,原因就在這幾個警告,由代碼得出以下結(jié)論:

setobject中的key和value可以為除了nil外的任何對象

setValue中的key只能為字符串 value可以為nil也可以為空對象[NSNull null]以及全部對象

總結(jié)兩者的區(qū)別:

setObject:forked:中object是不能夠為nil的,不然會報錯。

setValue:forKey:中value能夠為nil,但是當(dāng)value為nil的時候,會自動調(diào)用removeObject:forKey方法

setValue:forKey:中key的參數(shù)只能夠是NSString類型,而setObject:forKey:的可以是任何類型

注意:setObject:forKey:對象不能存放nil要與下面的這種情況區(qū)分:

[imageDictionary setObject:[NSNullnull] forKey:indexNumber];

[NSNull null]表示的是一個空對象,并不是nil,注意這點

setObject:forKey:中Key是NSNumber對象的時候,如下:

[imageDictionary setObject:obj forKey:[NSNumber numberWithInt:10]];

上面說的區(qū)別是針對調(diào)用者是dictionary而言的。setObject:forKey:方法NSMutabledictionary特有的,而setValue:forKey:方法是KVC(鍵-值編碼)的主要方法。

當(dāng) setValue:forKey:方法調(diào)用者是對象的時候: setValue:forKey:方法是在NSObject對象中創(chuàng)建的,也就是說所有的oc對象都有這個方法,所以可以用于任何類。

以上所述是小編給大家介紹的iOS中setValue和setObject的區(qū)別詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論

息烽县| 杭锦后旗| 万荣县| 宜宾县| 大同县| 阳朔县| 长寿区| 云林县| 阜宁县| 乳山市| 汕头市| 东明县| 闽侯县| 始兴县| 高安市| 英山县| 思南县| 雅江县| 琼结县| 平远县| 丰顺县| 铁岭县| 永宁县| 高陵县| 内江市| 漳平市| 将乐县| 密山市| 甘洛县| 杭锦后旗| 会理县| 鄂伦春自治旗| 木兰县| 内丘县| 来凤县| 清原| 惠来县| 三江| 砀山县| 苏尼特右旗| 姚安县|