Независимо от того, что я делаю, я не могу заставить свои NSUserDefaults сохранять при использовании симулятора iOS. Я читал сообщения, и я звоню synchronize
, но он все еще не работает.NSUserDefault не сохраняет в симуляторе
У меня есть кнопка, которая имитирует флажок. Когда нажимается кнопка, срабатывает метод toggleSavedPassword
. Даже после проверки флажка (то есть установки «save_password» в true), когда я вернусь в приложение, значение сбрасывается на значение false каждый раз.
Что я делаю неправильно? Благодаря!
Это мой выход каждый раз, когда я следую последовательность запуска приложения и нажав на флажок:
password NOT saved
user save password set to: true
password save set
user default didn't save
Вот код:
- (void)viewDidLoad
{
[super viewDidLoad];
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] init];
NSLog([self.userDefaults boolForKey:@"save_password"] ? @"password saved" : @"password NOT saved");
// check the save password box based on user default settings
if ([userDefaults boolForKey:@"save_password"]) {
[self.savePasswordCheckBox setBackgroundImage:[UIImage imageNamed:@"checked_checkbox"] forState:UIControlStateNormal];
}
}
- (IBAction)toggleSavePassword:(UIButton *)sender {
self.savePassword = !self.savePassword;
NSString *temp;
if (self.savePassword) temp = @"true";
else temp = @"false";
NSLog(@"user save password set to: %@\n", temp);
if (self.savePassword) {
[self.savePasswordCheckBox setBackgroundImage:[UIImage imageNamed:@"checked_checkbox"] forState:UIControlStateNormal];
[self.userDefaults setBool:YES forKey:@"save_password"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"password save set");
} else {
[self.savePasswordCheckBox setBackgroundImage:[UIImage imageNamed:@"unchecked_checkbox"] forState:UIControlStateNormal];
[self.userDefaults setBool:NO forKey:@"save_password"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NSLog([self.userDefaults boolForKey:@"save_password"] ? @"Confirmed" : @"user default didn't save");
}
Почему вы назначаете NSUserDefaults * userDefaults = [[NSUserDefaults alloc] init]; используйте [NSUserDefaults standardUserDefaults] вместо этого в viewDidLoad, а затем попробуйте – San
@San - я изменил это. Все еще имеют ту же проблему и вывод. @Michael Dauterman - Я добавил эту строку в конце моего метода toggleSavedPassword. Все, что было сделано, было добавлено еще один вывод, который говорит мне «пароль НЕ сохранен» – Alex
@ usr55410 Если вы изменили, обновите свой вопрос. – KudoCC