ios - 在NSDictionary中使用下标访问值和仅使用valueForKey访问值之间的区别

标签 ios objective-c nsdictionary

我有以下几行:

_driverName.text = [[[responseDictionary valueForKey:@"response" ] valueForKey:@"driverinfo"]valueForKey:@"name"];

但是我认为我可以通过以下方式使用订阅来缩小这一行:
_driverName.text = responseDictionary[@"response" ][@"driverinfo"][@"name"];

看起来更干净易读。
是否可以应用此语法而不会带来附带后果?
提前致谢

最佳答案

忽略valueForKey:的滥用(请使用objectForKey:),您不应在问题中使用任何一个示例。当您遇到问题时,这两种方法都无法调试,因为数据结构不是您想象的那样。

尽管需要更多时间,但最终还是值得将每个访问权限划分为单独的一行:

NSDictionary *response = responseDictionary[@"response"];
NSDictionary *driverInfo = response[@"driverInfo"];
_driverName.text = driverInfo[@"name"];

但是,与使用objectForKey:相比,使用现代下标语法总是容易得多,并且不容易出错,并且可以确保您不会错误地使用valueForKey:

关于ios - 在NSDictionary中使用下标访问值和仅使用valueForKey访问值之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39922181/

相关文章:

iphone - ARC 循环保留检测

swift - 如何从 NSDictionary writeToURL 获取详细的错误消息?

objective-c - block 可以用作 iOS 中 notFoundMarker 的值吗?

objective-c - 应用程序不呈现模态视图 Controller

objective-c - 在某些情况下禁用自动桥接

Objective-C 在 NSString 中查找最常用的词

ios - 如何获得没有锯齿的 iOS 矢量图像?

ios - 是否可以使用 iOS Developer Enterprise Program 分发使用 beta SDK 构建的内部应用程序?

objective-c - 共享托管对象上下文

iphone - 选择 tabview 时获取正确的 UIViewController 实例 - IOS