2014-01-02 2 views
0

Независимо от того, что я делаю, я не могу заставить свои 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"); 

} 
+0

Почему вы назначаете NSUserDefaults * userDefaults = [[NSUserDefaults alloc] init]; используйте [NSUserDefaults standardUserDefaults] вместо этого в viewDidLoad, а затем попробуйте – San

+0

@San - я изменил это. Все еще имеют ту же проблему и вывод. @Michael Dauterman - Я добавил эту строку в конце моего метода toggleSavedPassword. Все, что было сделано, было добавлено еще один вывод, который говорит мне «пароль НЕ сохранен» – Alex

+0

@ usr55410 Если вы изменили, обновите свой вопрос. – KudoCC

ответ

1

где ваш self.userDefaults-setter метод BTW, он должен быть NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

2

Нет необходимости добавлять NSUserDefaults как имущество.

Вы могли бы просто использовать

[NSUserDefaults standardUserDefaults]; 

Для экономии:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"save_password"]; 

Для получения:

[[NSUserDefaults standardUserDefaults] boolForKey:@"save_password"]; 
+0

Спасибо. Это просто заставляет немного меньше кода, устанавливая свойство. В конечном счете, я собираюсь завершить некоторые из этих предпочтений, поэтому меньше кода - это хорошо. +1 – Alex

Смежные вопросы