2010-03-19 2 views
0

Я использую следующий код для сохранения значений из представления параметров, которое принимает значения из UITextField и сохраняет их с помощью NSUserDefaults. Код ниже даже вызывает синхронизацию, но он не сохраняет изменения. Что я здесь делаю неправильно?Почему я не могу сохранить изменения в настройках приложения с помощью 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]; 
} 
+0

Почему бы не использовать брелка услуги для хранения конфиденциальной информации? http://developer.apple.com/iphone/library/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html –

ответ

6

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

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

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

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

+0

Не забудьте вызвать '[defaults synchronize]' после внесения изменений. –

+1

Он делает, поэтому я показал только фрагмент его фрагмента кода. :) – MarkPowell

0

Вы должны установить 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"];