博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iOS报错】“this class is not key value coding-compliant for the key userPhoneNum”给字典设置键值对的时候报错...
阅读量:7018 次
发布时间:2019-06-28

本文共 979 字,大约阅读时间需要 3 分钟。

昨天在给FMDB二次封装的时候,当封装查询方法的时候,出现了这个报错:

报错信息

一、原始代码:

原始代码

当时也是懵逼了,不明所以,查了一些资料,不过大部分都是介绍说是在xib文件设置的时候由于没有关联引起的,但是实际上我这边却是在给字典设置值的时候出现了这个报错。

之后由于自己的不仔细查看错误信息以及基础知识点概念的模糊,一直没有找到解决的方案。

而在今天和询问朋友后才发现原来是自己基础点就搞错了,忘了字典的属性了。

二、代码说明:

[dict setValue:(nullable id) forKey:(nonnull NSString *)];

该方法是NSObject继承于NSKeyValueCoding协议,所以只要是继承NSObject的都会有这个方法。但是当字典设置这个方法时却是给字典添加键值对的。而NSDictionary是不可变字典,只可以固定更改对应已存在key的值,而不可以是新增键值对;而NSMutableDictionary则是可变字典,可向其添加新的键值对,则可以使用该方法进行添加。所以只需要将字典的属性有不可变改为可变即可。

注:被这么基础的东西搞糊涂了,也真是醉了,只怪自己没有好好学习基础知识。大家一定要学好基础呀!

三、改正后的代码:

改正后的代码

四、补充:

1、setValue:forkey:与property

对于字典而言:

      是给值添加唯一标签,从而方便识别。可以理解为,value是主因,只有有了value才会添加key的唯一标签。

对于property而言:

      是对创建的属性进行赋值。可以理解为,只有当有了property属性,即key;才会有赋值,即value。

2、setValue:forkey: 与 setObject:forkey:的区别:

setValue:forkey:

(1)value值可以为nil,但是当value为nil的时候,会自动调用removeObject:forkey:方法;

(2)key只能够是NSString类型。

setObject:forkey:

(1)value是不能够为nil的,否则会报错;

(2)key可以是任何类型的。如果key是以“@”开头的,如NSDictionary类型,建议只用ObjectForkey来取值。    

好好学习,天天向上!^_^

转载地址:http://gxzxl.baihongyu.com/

你可能感兴趣的文章
迅雷移动端业务发展迅猛 Q2广告收入同比上涨41.6%
查看>>
迎接数字化社会,华为积极布局
查看>>
阿里云成为CNCF金牌会员 提供云端Kubernetes解决方案
查看>>
F5:亡羊补牢为时已晚,投资网络安全比处理漏洞更划算
查看>>
青云QingCloud推出HBase集群服务 支持SQL等高级功能
查看>>
Windows远程桌面漏洞Esteemaudit(CVE-2017-9073)补丁简要分析
查看>>
Arbor Networks凭借业界全面的 DDoS 防御组合为各类客户提供可用性保护
查看>>
达沃时代帮助VSAN提供NAS方案
查看>>
买服务器网络设备时该考虑哪些因素?
查看>>
悲催的CISO:数据泄露事故的替罪羊
查看>>
2015年十大安全故事回顾
查看>>
数据挖掘与预测分析术语总结
查看>>
寻找“高级威胁”防御的答案
查看>>
“有本事就来抓我呀!”企业发现APT攻击平均需要205天
查看>>
女兒,今天是你的生日
查看>>
机器学习零基础?手把手教你用TensorFlow搭建图像识别系统(二)
查看>>
韩国美女黑客是怎样的一种存在?
查看>>
利用无人机或吸尘器黑掉企业无线打印机
查看>>
Linux基础命令介绍九:进程与内存
查看>>
实现翻转卡片的动画效果
查看>>