Почему я не могу сохранить изменения в настройках приложения с помощью NSUserDefaults? - PullRequest
0 голосов
/ 19 марта 2010

Я использую следующий код для сохранения значений из представления настроек, которое берет значения из UITextField и сохраняет их с NSUserDefaults. Приведенный ниже код даже вызывает синхронизацию, но изменения не сохраняются. Что я тут не так делаю?

- (IBAction)save {
    NSLog(@"save");

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if (self.usernameTextField.text != nil) {
        NSLog(@"username: %@", self.usernameTextField.text);
        [defaults setObject:kTwitterUsernameKey forKey:self.usernameTextField.text];
    }
    if (self.passwordTextField.text != nil) {
        NSLog(@"password: %@", self.passwordTextField.text);
        [defaults setObject:kTwitterPasswordKey forKey:self.passwordTextField.text];
    }

    [defaults synchronize];

    [self dismissModalViewControllerAnimated:TRUE];
}

Ответы [ 2 ]

6 голосов
/ 19 марта 2010

Вы устанавливаете ключ к имени пользователя и паролю со значением имени пользователя / пароля.

Таким образом, вы никогда не сможете получить эти данные (если вы уже не знаете имя пользователя и пароль;))

if (self.usernameTextField.text != nil) {
    NSLog(@"username: %@", self.usernameTextField.text);
    [defaults setObject:self.usernameTextField.text forKey:kTwitterUsernameKey];
}

Попробуйте поменять местами, как показано выше.

0 голосов
/ 19 марта 2010

Вам нужно установить kTwitterUsernameKey, как показано ниже

//Saving kTwitterUsernameKey
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.usernameTextField.text forKey:kTwitterUsernameKey];
//Retrieving kTwitterUsernameKey
NSString *myString = [defaults stringForKey:@"kTwitterUsernameKey"];

Общий шаблон для NSUserDefaults, как показано ниже

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];
// retrieve an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...