国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

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

2020-07-26 02:57:10
字體:
供稿:網(wǎng)友

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

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,但是當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(鍵-值編碼)的主要方法。

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临邑县| 绥棱县| 宿州市| 剑河县| 望城县| 抚宁县| 德安县| 元朗区| 神农架林区| 庄浪县| 龙海市| 株洲县| 凤城市| 张家口市| 乐亭县| 贺兰县| 红安县| 龙胜| 余干县| 柳林县| 闽清县| 长垣县| 尖扎县| 贵阳市| 任丘市| 平顺县| 鄂伦春自治旗| 宜城市| 江津市| 辰溪县| 通化县| 云林县| 灌云县| 乌兰察布市| 石家庄市| 兖州市| 杭锦旗| 新晃| 冀州市| 泽库县| 亚东县|