网上关于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的区别详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# ios
# setobject和setvalue
# iOS获取AppIcon and LaunchImage''s name(app图标和启动图片名字)
# IOS9.0 LaunchScreen.StroyBoard自定义启动图片详解
# IOS LaunchScreen设置启动图片与启动页停留时间详解
# 快速解决低版本Xcode不支持高版本iOS真机调试的问题方法
# IOS开发 支持https请求以及ssl证书配置详解
# iOS实现自定义日期选择器示例
# iOS 获取公历、农历日期的年月日的实例代码
# iOS界面跳转时导航栏和tabBar的隐藏与显示功能
# IOS App图标和启动画面尺寸详细介绍
# 也可
# 特有的
# 能为
# 小编
# 的是
# 是在
# 都有
# 就在
# 在此
# 调用者
# 给大家
# 这种情况
# 报错
# 这几个
# 多说
# 不能够
# 所述
# 给我留言
# 感谢大家
# 疑问请
相关文章:
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
如何选择可靠的免备案建站服务器?
如何在阿里云服务器自主搭建网站?
如何挑选优质建站一级代理提升网站排名?
建站之星展会模板:智能建站与自助搭建高效解决方案
python的本地网站制作,如何创建本地站点?
建站之星3.0如何解决常见操作问题?
建站之星各版本价格是多少?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
郑州企业网站制作公司,郑州招聘网站有哪些?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何基于云服务器快速搭建个人网站?
如何确保FTP站点访问权限与数据传输安全?
动图在线制作网站有哪些,滑动动图图集怎么做?
浅析上传头像示例及其注意事项
表情包在线制作网站免费,表情包怎么弄?
江苏网站制作公司有哪些,江苏书法考级官方网站?
建站三合一如何选?哪家性价比更高?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Python文件管理规范_工程实践说明【指导】
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
微信推文制作网站有哪些,怎么做微信推文,急?
b2c电商网站制作流程,b2c水平综合的电商平台?
如何规划企业建站流程的关键步骤?
电商网站制作价格怎么算,网上拍卖流程以及规则?
建站VPS推荐:2025年高性能服务器配置指南
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
建站为何优先选择香港服务器?
建站主机与服务器功能差异如何区分?
开心动漫网站制作软件下载,十分开心动画为何停播?
非常酷的网站设计制作软件,酷培ai教育官方网站?
如何在服务器上配置二级域名建站?
如何在阿里云虚拟服务器快速搭建网站?
企业微网站怎么做,公司网站和公众号有什么区别?
如何用y主机助手快速搭建网站?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
怎么将XML数据可视化 D3.js加载XML
建站10G流量真的够用吗?如何应对访问高峰?
建站主机服务器选型指南与性能优化方案解析
如何获取免费开源的自助建站系统源码?
Python如何创建带属性的XML节点
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
青浦网站制作公司有哪些,苹果官网发货地是哪里?
如何快速搭建高效香港服务器网站?
常州自助建站费用包含哪些项目?
*请认真填写需求信息,我们会在24小时内与您取得联系。