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

前端之家收集整理的这篇文章主要介绍了Objective-C:forKey和forKeyPath有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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访问字典中的元素.

猜你在找的C&C++相关文章