I got a very strange bug when I'm trying to read my plist. My plist looks like :
Root (Array)
Item 0 (Dictionary)
title (String)
I want to display title
in the log, so I did the code bellow:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
NSString *path = [basePath stringByAppendingPathComponent:@"data.plist"];
NSMutableDictionary *dict = [[NSDictionary dictionaryWithContentsOfFile:path] mutableCopy];
NSLog(@"%@", [dict objectForKey:@"title"]);
NSLog(@"Path to plist: %@", path);
With this code, NSLog(@"%@", [dict objectForKey:@"title"]);
is equal to "(null)
"...
My plist is in my app's documents folder, and the log of path
return the good path to my plist.
Help me please :)
As @Tom said, (and as you said yourself in your first code block) the root of the plist is an array.
You can load an array very similarly using:
Then you can access the item at index 0 (the dictionary) like this:
Or since Xcode 4.4 with thew new array literals:
And then log the title as you already tried:
Or with the new syntax:
The root of your plist is an array but you read it into a dictionary, thats won't work.
You should: