我有一個充滿數據的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