PruitIgoe
PruitIgoe

Reputation: 6384

iOS plist is null

I know there are a multitude of questions about this on SO but I can't see where I am making the mistake and am hoping some extra eyes will help. I've verified the plist is in my bundle and it is also in my docs directory and it contains data. Here's a screen capture of the app package with the plist at top:

enter image description here

I pass the plist in from another class and have verified that it is the correct plist.

Here's my code:

-(id)init {

    if (self = [super init]) {

        //set up the appTracker
        appTracker = [[OAI_AppTracker alloc] init];

        //set up a file manager and error container
        fileManger=[NSFileManager defaultManager];

        //docs directory path
        documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

        //track event
        appTracker.appEvent = @"File Manager initialized";
        [appTracker recordEvent];

    }

    return self;
}

- (NSDictionary* ) readPlist {

    NSError* error;

    //set up dictionary to hold our app data
    NSDictionary* appData;

    //set up destination path
    NSString* destinationPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", plistToRead]];

    if ([fileManger fileExistsAtPath:destinationPath]){
        //read plist
        appData = [[NSDictionary alloc] initWithContentsOfFile:destinationPath];
    } else {

        //file doesn't exist so we have to move it to the doc folder
        NSString *sourcePath=[[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:plistToWrite];
        [fileManger copyItemAtPath:sourcePath toPath:destinationPath error:&error];

        //now read the plist
        appData = [[NSDictionary alloc] initWithContentsOfFile:destinationPath];

    }

    NSLog(@"%@", appData);
    return appData;

}

My log shows NULL instead of the data in the plist. Appreciate any help as to what I am doing wrong.

Upvotes: 0

Views: 460

Answers (1)

hundreth
hundreth

Reputation: 841

To read your plist try something like this:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"PlistFileName" ofType:@"plist"];
NSDictionary *plistData = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

Upvotes: 1

Related Questions