Сохранение NSDictionary для NSUserDefaults
У меня есть NSMutableDictionary, и я добавил к нему значения (несколько значений пары ключей). Теперь мне нужно сохранить этот NSMutableDictionary в объекте NSUserDefaults.
1.) Мой код выглядит следующим образом. Я не уверен, что это правильно, а также мне нужно знать, как получить NSMutableDictionary из NSUSerDefault?
2.) После извлечения NSMutableDictionary мне нужно сохранить его в NSDictionary. Как я могу это сделать?
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic addObject:@"sss" forKey:@"hi"];
[dic addObject:@"eee" forKey:@"hr"];
[NSUserDefaults standardDefaults] setObject:dic forKey:@"DicKey"];
[[NSUserDefaults standardDefaults] synchronize];
Ответы
Ответ 1
Ваш код верен, но вам нужно иметь в виду, что NSUserDefaults
не проводит различия между изменяемыми и неизменяемыми объектами, поэтому, когда вы его получите, он будет неизменным:
NSDictionary *retrievedDictionary = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"DicKey"];
Если вы хотите изменить словарь, просто используйте mutableCopy
:
NSMutableDictionary *mutableRetrievedDictionary = [[[NSUserDefaults standardUserDefaults] objectForKey:@"DicKey"] mutableCopy];
Ответ 2
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];
Это то, что вы ожидали.