objectForKey和valueForKey的区别
objectForKey是NSDictionary的方法
objectForKey: returns the value associated with aKey, or nil if no value is associated with aKey. 返回指定key
的value
,若没有这个key
返回nil
.
valueForKey是KVC提供的方法
valueForKey: returns the value associated with a given key. 同样是返回指定key
的value
.
但官方文档里有额外一点:一般来说key
可以是任意字符串组合,如果key
不是以@
符号开头,这时候valueForKey:
等同于objectForKey:
,如果是以@
开头,valueForKey
方法执行时会去掉key
里的@
然后用剩下部分作为key
执行[super valueForKey:]
.
在KVC
里可以通过property
同名字符串来获取对应的值。找不到值的时候执行valueForUndefinedKey:
而valueForUndefinedKey
的默认实现是抛出 NSUndefinedKeyException
异常.
举例:
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"Value" forKey:@"@Key"];// 注意这个 key 是以 @ 开头
NSString *value1 = [dic objectForKey:@"@Key"];
NSString *value2 = [dic valueForKey:@"@Key"];
value1
可以正确取值,但是value2
取值会直接crash
!
因此,我们在平时使用NSDictionary
的时候建议使用objectForKey
!
FEATURED TAGS
iOS
OC
C
Xcode
MIMEType
屏幕旋转
Mac
工具
SQLite3
重命名
证书+内购
像素
pch
支付协议税务
APP转让
审核
银行卡格式化
git
描述文件
命令行
沙盒日志
i386
x86_64
控制台log
xcode10&iOS12
正则
textfield
输入限制
Pod
真机支持
封面尺寸
SDWebImage
Ruby
RVM
渐变色
jekyll
水印
富文本
标签
M3U8
动、静态库
异步上传
Url编码解码
AlertController
保活
pod报错
特定UI横竖屏
Launch版本号
ijkplayer
适配
手势
截图
网络和信号
礼物缓存
手绘礼物
UIPickerView
文件权限
键盘和菜单
耗时卡顿
国际化
Paypal
AWSS3
npm、Node
控制台
warning
扩展
防盗链
动画
分析
CallKit
侧滑
重置根控制器
播放器
裁剪
日志
bugly
uniapp
Swift
文字翻转
跨域
WebClip
网络请求
地图导航
ZSH
SPM
Vapor
导航
验证码
杀进程
Ubuntu
Android
JWT
vue
html-js
style-class
ssh
PHP
jks
css
Runtime
tree
uniCloud
圆角
总结