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外的任何對(duì)象 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也可以為空對(duì)象[NSNull null] }
程序崩潰,原因就在這幾個(gè)警告,由代碼得出以下結(jié)論:
setobject中的key和value可以為除了nil外的任何對(duì)象
setValue中的key只能為字符串 value可以為nil也可以為空對(duì)象[NSNull null]以及全部對(duì)象
總結(jié)兩者的區(qū)別:
setObject:forked:中object是不能夠?yàn)閚il的,不然會(huì)報(bào)錯(cuò)。
setValue:forKey:中value能夠?yàn)閚il,但是當(dāng)value為nil的時(shí)候,會(huì)自動(dòng)調(diào)用removeObject:forKey方法
setValue:forKey:中key的參數(shù)只能夠是NSString類型,而setObject:forKey:的可以是任何類型
注意:setObject:forKey:對(duì)象不能存放nil要與下面的這種情況區(qū)分:
[imageDictionary setObject:[NSNullnull] forKey:indexNumber];
[NSNull null]表示的是一個(gè)空對(duì)象,并不是nil,注意這點(diǎn)
setObject:forKey:中Key是NSNumber對(duì)象的時(shí)候,如下:
[imageDictionary setObject:obj forKey:[NSNumber numberWithInt:10]];
上面說的區(qū)別是針對(duì)調(diào)用者是dictionary而言的。setObject:forKey:方法NSMutabledictionary特有的,而setValue:forKey:方法是KVC(鍵-值編碼)的主要方法。
當(dāng) setValue:forKey:方法調(diào)用者是對(duì)象的時(shí)候: setValue:forKey:方法是在NSObject對(duì)象中創(chuàng)建的,也就是說所有的oc對(duì)象都有這個(gè)方法,所以可以用于任何類。
以上所述是小編給大家介紹的iOS中setValue和setObject的區(qū)別詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- iOS獲取AppIcon and LaunchImage''s name(app圖標(biāo)和啟動(dòng)圖片名字)
- IOS9.0 LaunchScreen.StroyBoard自定義啟動(dòng)圖片詳解
- IOS LaunchScreen設(shè)置啟動(dòng)圖片與啟動(dòng)頁停留時(shí)間詳解
- 快速解決低版本Xcode不支持高版本iOS真機(jī)調(diào)試的問題方法
- IOS開發(fā) 支持https請求以及ssl證書配置詳解
- iOS實(shí)現(xiàn)自定義日期選擇器示例
- iOS 獲取公歷、農(nóng)歷日期的年月日的實(shí)例代碼
- iOS界面跳轉(zhuǎn)時(shí)導(dǎo)航欄和tabBar的隱藏與顯示功能
- IOS App圖標(biāo)和啟動(dòng)畫面尺寸詳細(xì)介紹
相關(guān)文章
IOS數(shù)字鍵盤左下角添加完成按鈕的實(shí)現(xiàn)方法
這篇文章主要介紹了IOS數(shù)字鍵盤左下角添加完成按鈕的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能實(shí)現(xiàn)類似這樣的功能,需要的朋友可以參考下2017-08-08iOS開發(fā)中實(shí)現(xiàn)一個(gè)簡單的圖片瀏覽器的實(shí)例講解
這篇文章主要介紹了iOS開發(fā)中實(shí)現(xiàn)一個(gè)簡單的圖片瀏覽器的實(shí)例講解,代碼基礎(chǔ)傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-01-01