I have a plist with the following format:

And here's how I read it:
NSString *errorDesc = nil;
NSPropertyListFormat format;
NSString *path = [[NSBundle mainBundle] pathForResource:@"States" ofType:@"plist"];
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:path];
NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization
propertyListFromData:plistXML
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:&format
errorDescription:&errorDesc];
self.statesData = [temp objectForKey:@"Root"];
The question is if I want to write this NSMutableArray called self.statesData back to the plist, how would I do it? I am guessing something like this wouldn't work...
NSString *path = [[NSBundle mainBundle] pathForResource:@"States" ofType:@"plist"];
[self.main.statesData writeToFile:path atomically: YES];
You can not write the app's bundle, you need to write to the app's Document directory.
Sample code:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];
BOOL status = [array writeToFile:filePath atomically:YES];
If you have initial dad in the app bundle on first run copy it to the Documents directory and make all further accesses to the Documents directory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With