我有一个充满数据的NSDictionary
。如果这是PHP它可能被访问的东西,如:目标C中的多维数组
$data = $array['all_items'][0]['name'];
我该如何做目标c类似的东西? ($array
将是一个NSDictionary
)
我有一个充满数据的NSDictionary
。如果这是PHP它可能被访问的东西,如:目标C中的多维数组
$data = $array['all_items'][0]['name'];
我该如何做目标c类似的东西? ($array
将是一个NSDictionary
)
在Objective-C的等效代码是:
id data = [[[array objectForKey:@"all_items"] objectAtIndex:0] objectForKey:@"name"];
注意objectForKey:
是NSDictionary中的方法,和objectAtIndex:
是NSArray中的方法。
在Xcode 4.5的快捷方式,使用LLVM 4.1,是:
id data = array[@"all_items"][0][@"name"];
还要注意的是,如果“阵列”是一个NSDictionary实例,你想获得的所有值的字典中的数组,可以使用的NSDictionary的allValues
方法:
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 [email protected]"all_items"];
NSDictionary *bar = [foo objectAtIndex:0];
NSString *data = [bar [email protected]"name"];
为了简便起见,您可以在单个行做到这一点:
NSString *data = [[[array [email protected]"all_items"] objectAtIndex:0] [email protected]"name"];
我想这里的数据是NSArray,其中是NSDictionary。 – Mil0R3