Подтвердить что ты не робот

Сохранение 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];
4b9b3361

Ответ 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];

Это то, что вы ожидали.