我有一个NSDictionary
充满数据的。如果这是 php,则可以通过以下方式访问它:
$data = $array['all_items'][0]['name'];
我如何在目标 c 中做类似的事情?($array
将是一个NSDictionary
)
我有一个NSDictionary
充满数据的。如果这是 php,则可以通过以下方式访问它:
$data = $array['all_items'][0]['name'];
我如何在目标 c 中做类似的事情?($array
将是一个NSDictionary
)
Objective-C 中的等效代码是:
id data = [[[array objectForKey:@"all_items"] objectAtIndex:0] objectForKey:@"name"];
注意objectForKey:
是NSDictionaryobjectAtIndex:
的方法,也是NSArray的方法。
Xcode 4.5 中使用 LLVM 4.1 的快捷方式是:
id data = array[@"all_items"][0][@"name"];
另请注意,如果“array”是一个 NSDictionary 实例,并且您想要获取字典中所有值的数组,则使用allValues
NSDictionary 的方法:
id data = [array allValues][0][@"name"];
当然,allValues
返回一个未排序的数组,所以按索引访问数组并不是很有用。更典型的是,您会看到:
for (NSDictionary* value in [array allValues])
{
id data = value[@"name"];
// do something with data
}
不幸的是,objective-c 版本在语法上不如 PHP 版本优雅:
NSDictionary *array = ...;
NSArray *foo = [array objectForKey@"all_items"];
NSDictionary *bar = [foo objectAtIndex:0];
NSString *data = [bar objectForKey@"name"];
为简洁起见,您可以在一行中执行以下操作:
NSString *data = [[[array objectForKey@"all_items"] objectAtIndex:0] objectForKey@"name"];