how to write NSMutableDictionary into Plist

2019-01-26 18:40发布

问题:

can any one help me with this how to write a NSMutableDictionary into a plist....

thanks in advance..

回答1:

Make sure the pList file you are writing to is located in a legal place to edit it, for example Documents in the apps sandbox. Then find the path to that location (if there is an existing pList file, it will overwrite), and use:

[myDictionary writeToFile:path atomically:YES];

Write how far you are in the process, and maybe some code / error-message...



回答2:

[yourDict writeToFile:filePath atomically:YES];

Note that dictionary must contain plist objects (instances of NSData, NSDate, NSNumber, NSString, NSArray, or NSDictionary). And dictionary keys must be NSString objects



回答3:

The issue is that your application is attempting to write the plist into its own bundle. Your plist should be stored in the User's Library. However, if you are storing a user's credentials for a service, you really aught to use the Mac OS X Keychain services to store that information.



回答4:

NSMutableDictionary *nameDetails=[[NSMutableDictionary alloc] init]; 
[nameDetails setValue:username forKey:USERNAME_KEY]; 
[nameDetails setValue:password forKey:PASSWORD_KEY]; 

NSString *loginDetails = [[NSBundle mainBundle] pathForResource:@"Login" ofType:@"plist"]; 
[nameDetails writeToFile:loginDetails atomically:YES];

savedStock = [NSMutableDictionary dictionaryWithContentsOfFile:loginDetails];


回答5:

NSString *pathToPlist = [[NSBundle mainBundle] bundlePath];
pathToPlist = [pathToPlist stringByDeletingLastPathComponent];
pathToPlist = [pathToPlist stringByAppendingPathComponent:@"Documents"];
NSLog(@"%@", pathToPlist; //*
pathToPlist = [pathToPlist stringByAppendingPathComponent:@"Login.plist"];
NSDictionary *nameDetails = @{@"name": @"Albert", @"password": @"emc2"};
[nameDetails writeToFile:pathToPlist atomically:YES];
  • We are logging the path to console, in order to be able to find it in the Finder. Copy the path from the console to the clipboard. Then in the Finder chooose "Go To Folder..." from the Go menu. Paste the path into the dialog box and the folder where the plist is will be opened. Then you can examine it and make sure that everything works as it should.