nik
nik

Reputation: 2329

how to write NSMutableDictionary into Plist

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

thanks in advance..

Upvotes: 3

Views: 9466

Answers (5)

Bob Ueland
Bob Ueland

Reputation: 1834

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.

Upvotes: 1

nik
nik

Reputation: 2329

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];

Upvotes: 1

Randall
Randall

Reputation: 733

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.

Upvotes: 2

John Kofod
John Kofod

Reputation: 196

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...

Upvotes: 6

Vladimir
Vladimir

Reputation: 170829

[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

Upvotes: 4

Related Questions