加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Objective-C:forKey和forKeyPath有什么区别?

发布时间:2020-12-16 03:37:29 所属栏目:百科 来源:网络整理
导读:在NSMutableDicitionary的setValue方法中,forKey和forKeyPath有什么区别?我在文档中查看了它们,它们对我来说似乎是一样的.我尝试了下面的代码,但我无法区分它们. NSMutableDictionary *dict = [NSMutableDictionary dictionary];[dict setValue:@"abc" forK
在NSMutableDicitionary的setValue方法中,forKey和forKeyPath有什么区别?我在文档中查看了它们,它们对我来说似乎是一样的.我尝试了下面的代码,但我无法区分它们.
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setValue:@"abc" forKey:@"ABC"];
[dict setValue:@"123" forKeyPath:@"xyz"];
for (NSString* key in dict) {
    id val = [dict objectForKey:key];
    NSLog(@"%@,%@",key,val);
}

解决方法

这两种方法都是 Key-Value Coding的一部分,通常不应用于字典中的元素访问.它们只能处理NSString类型的键,并且需要特定的语法.

它们之间的区别在于指定(单个)键只会查找该项.

另一方面,指定关键路径遵循通过对象的路径.如果您有字典词典,则可以使用“key1.key2”之类的键路径在第二级中查找元素.

如果您只想访问字典中的元素,则应使用objectForKey:和setObject:forKey:.

编辑以回答为什么valueForKey:不应该使用:

> valueForKey:仅适用于字符串键.字典可以使用其他对象作为键.> valueForKey:以不同方式处理以“@”字符开头的键.您无法访问其键以@开头的元素.>最重要的是:通过使用valueForKey:你说:“我正在使用KVC”.应该有这样做的理由.使用objectForKey时:您只是通过自然的API访问字典中的元素.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读