2010-10-21 44 views

Répondre

6

Assurez-vous que le fichier pList que vous écrivez est situé dans un endroit légal pour le modifier, par exemple Documents dans le sandbox des applications. Ensuite, trouver le chemin vers cet endroit (s'il y a un fichier plist existant, il écrasera), et utiliser:

[myDictionary writeToFile:path atomically:YES]; 

Ecrire dans quelle mesure vous êtes dans le processus, et peut-être un code/erreur message. ..

+1

voici mon code: NSMutableDictionary * nameDetails = [[NSMutableDictionary alloc] init]; [nameDetails setValue: nom d'utilisateur forKey: USERNAME_KEY]; \t [nameDetails setValue: mot de passe forKey: PASSWORD_KEY]; \t \t NSString * loginDetails = [[NSBundle mainBundle] pathForResource: @ "Login" deType: @ "plist"]; \t [nameDetails writeToFile: loginDetails atomiquement: YES]; \t savedStock = [NSMutableDictionary dictionaryWithContentsOfFile: loginDetails]; – nik

4
[yourDict writeToFile:filePath atomically:YES]; 

Notez que le dictionnaire doit contenir plist objets (instances de NSData, NSDate, NSNumber, NSString, NSArray ou NSDictionary). Et les clés du dictionnaire doivent être objets

+0

mais ça ne marche pas .. – nik

+0

voici mon code [nomDetails writeToFile: loginDetails atomically: YES]; – nik

+0

Qu'est-ce que le chemin loginDetails? Et êtes-vous sûr que votre dictionnaire remplit les conditions pour ses types de contenu? – Vladimir

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

Le problème est que votre application tente d'écrire le plist dans son propre lot. Votre plist doit être stocké dans la bibliothèque de l'utilisateur. Toutefois, si vous stockez les informations d'identification d'un utilisateur pour un service, vous devez vraiment utiliser les services Mac OS X Keychain pour stocker ces informations.

1
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]; 
  • Nous enregistrons le chemin de la console, afin de pouvoir le trouver dans le Finder. Copiez le chemin de la console dans le presse-papiers. Ensuite, dans le Finder choisissez "Aller au dossier ..." dans le menu Aller. Collez le chemin dans la boîte de dialogue et le dossier où se trouve le plist sera ouvert. Ensuite, vous pouvez l'examiner et vous assurer que tout fonctionne comme il se doit.