我有以下几行:
_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/