user455889 user455889 - 24 days ago 8
Objective-C Question

Directly accessing nested dictionary values in Objective-C

Is there a way to directly access an inner-array of an an outer array in Objective-C? For example, a call to an external data source returns the following object:

bio = "this is the data";
"first_name" = John;
"last_name" = Doe;
location = {
name = "Any Town, Any State";
metadata = {
pictures = {
picture = "";

I want to be able to access, for example, the or the data. Dot notation, however, does not seem to work. For example:

_gfbLocation = [result objectForKey:@""];
_gfbPicture = [result objectForKey:@""];

The only way I have been able to access this data is by first setting the contents of the inner arrays to objects. Thoughts?

Answer Source

For nested keys like that you can use a keyPath. A keyPath is just a series of keys joined with dots. You can use them to retrieve nested values from objects that support Key-Value Coding - including NSDictionary objects like yours. So in your case this should work:

[result valueForKeyPath:@""];

For more detail on Key-Value Coding, see Apple's Key-Value Coding Programming Guide.

See also this related StackOverflow question.