Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

iOS Build a Blog Reader iPhone App Getting Data from the Web What is NSDictionary?

Order of Key Value

We add the follow Key Value in the video:

NSDictionary *blogPost1 = [NSDictionary dictionaryWithObjectsAndKeys:@"The Missing Code",@"title",@"Aaron A",@"author", nil];

However the order in the log prints the following:

2014-02-09 07:39:34.982 BlogReader[2647:70b] {
    author = "Aaron A";
    title = "The Missing Code";
}

Why does it print author then title? and not title then author?

4 Answers

It really shouldn't matter which order it's getting printed. Since you always be accessing the values by it's keys. May be dictionaryWithObjectsAndKeys sorts the order by 'keys'.

It will always print in the alphabetical order. I experimented a little bit and did like this: NSDictionary *blogPost1 = [NSDictionary dictionaryWithObjectsAndKeys:@"The Missing Code",@"title",@"Aaron A",@"author",@"The Missing Code",@"title",@"google.com",@"url" , @"writing",@"hobby",nil]; NSLog(@"%@",blogPost1);

   the output which i got is :

{ author = "Aaron A"; hobby = writing; title = "The Missing Code"; url = "google.com"; }

I hope it answers your "WHY????"

Awesome thanks for the feed back thats good to know!

I did some testing and you are correct - thank you!

I agree, it does not matter. I just wanted to know 'why'. Thanks for replying!

The entries in a NSDictionary could be of any order (the NSDictionary class doesn't keep track of the order), so don't rely on them being in the same order as you created them. Then again, as Harish Upadhyayula mentioned above, it doesn't matter which order it is since you're accessing by it's keys. If you want to order them, add them to an array and then sort them.

Yeah, I understand, I was just curious on how the log worked thats all.

Yeah, just wanted to add some technical information about the NSDictionary class (since the above commenter acutally didn't answer the "why" of your question).