web-dev-qa-db-fra.com

Enregistrement de NSDictionary dans NSUserDefaults

J'ai un NSMutableDictionary, et je lui ai ajouté des valeurs (plusieurs valeurs de paire de clés). Maintenant, je dois enregistrer ce NSMutableDictionary dans un objet NSUserDefaults.

1.) Mon code comme suit; Je ne sais pas si c'est correct, et j'ai également besoin de savoir comment récupérer le NSMutableDictionary à partir du NSUSerDefault?

2.) Après avoir récupéré le NSMutableDictionary, je dois l'enregistrer dans un NSDictionary. Comment pourrais-je faire cela?

NSMutableDictionary *dic = [[NSMutableDictionary  alloc] init];

[dic addObject:@"sss" forKey:@"hi"];
[dic addObject:@"eee" forKey:@"hr"];

 [NSUserDefaults standardDefaults] setObject:dic forKey:@"DicKey"];
 [[NSUserDefaults standardDefaults] synchronize];
46
shajem

Votre code est correct, mais la seule chose que vous devez garder à l'esprit est que NSUserDefaults ne fait pas de distinction entre les objets mutables et immuables, donc lorsque vous le récupérez, il sera immuable:

NSDictionary *retrievedDictionary = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"DicKey"];

Si vous voulez un dictionnaire mutable, utilisez simplement mutableCopy:

NSMutableDictionary *mutableRetrievedDictionary = [[[NSUserDefaults standardUserDefaults] objectForKey:@"DicKey"] mutableCopy];
82
yuji
NSMutableDictionary *profileDictionary = [[NSMutableDictionary  alloc] init];
[profileDictionary setObject:txt_Username.text forKey:@"USERNAME_KEY"];
[profileDictionary setObject:txt_Password forKey:@"PASSWORD_KEY"];
[[NSUserDefaults standardUserDefaults] setObject:profileDictionary forKey:@"PROFILE_KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];

Voilà ce que vous attendiez.

6
KkMIW