I've established how to read a BOOL from a plist, but I don't know how to write over the BOOL value I originally read.
The BOOL I'm reading is buried within my plist. When the view loads I take a dictionary from the plist that contains all the info for the view (detail view at the end of a drill down), and the BOOL is inside that dictionary. I can change the value of the BOOL in the dictionary once it's been brought into the app, but I don't know how to write this back to the postion within the plist.
Hopefully this is making sense?
Cheers!
Write a NSDictionary to a Property List:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"FileName.plist"];
NSDictionary *myDict = [[NSDictionary alloc] init];
[myDict setObject:[NSNumber numberWithBool:YES] forKey:@"myKey"];
[myDict writeToFile:filePath atomically:YES];
Read the Boolean:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"FileName.plist"];
NSDictionary *myDict = [[NSDictionary alloc] initWithContentsOfFile:filePath];
BOOL myBool = [[myDict objectForKey:@"myKey"] boolValue];
You can also put the filePath code into this function:
- (NSString *)getFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"FileName.plist"];
return filePath;
}
And use it like this: (for reading)
NSDictionary *myDict = [[NSDictionary alloc] initWithContentsOfFile:[self getFilePath]];
BOOL myBool = [[myDict objectForKey@"myKey"] boolValue];
And this: (for writing)
NSDictionary *myDict = [[NSDictionary alloc] init];
[myDict setObject:[NSNumber numberWithBool:YES] forKey:@"myKey"];
[myDict writeToFile:[self getFilePath] atomically:YES];
For writing BOOL to .plist use below code
NSMutableDictionary* myDict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
[myDict setObject:[NSNumber numberWithBool:YES] forKey:@"LSUIElement"];
[myDict writeToFile:plistPath atomically:NO];
Also have look at the post
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