中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS中setValue和setObject的區別詳解

發布時間:2020-09-29 04:06:35 來源:腳本之家 閱讀:283 作者:李永吉 欄目:移動開發

網上關于setValue和setObject的區別的文章很多,說的并不準確,首先我們得知道:

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

話不多說,上代碼:

- (void)viewDidLoad { 
 [super viewDidLoad]; 
 //setObject和setvalue的區別 
 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] 
} 

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

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

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

總結兩者的區別:

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

setValue:forKey:中value能夠為nil,但是當value為nil的時候,會自動調用removeObject:forKey方法

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

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

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

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

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

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

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

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

以上所述是小編給大家介紹的iOS中setValue和setObject的區別詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大同县| 阿克| 陆川县| 潮安县| 六安市| 平山县| 汾阳市| 神木县| 巧家县| 响水县| 垣曲县| 卫辉市| 乌兰察布市| 威远县| 阿鲁科尔沁旗| 西青区| 丽水市| 定结县| 宜春市| 思茅市| 江城| 西藏| 万州区| 临武县| 泽州县| 平罗县| 石城县| 黄大仙区| 尖扎县| 昌乐县| 石狮市| 板桥市| 淮安市| 黔西县| 秦皇岛市| 东方市| 平定县| 祁门县| 蓬安县| 鹿泉市| 横山县|