简体   繁体   English

为什么我不能使用NSUserDefaults保存对应用程序设置的更改?

[英]Why can't I save changes to application settings with NSUserDefaults?

I am using the following code to save values from a settings view that takes values from a UITextField and stores them with NSUserDefaults. 我正在使用以下代码从设置视图保存值,该视图从UITextField获取值并将其与NSUserDefaults存储在一起。 The code below even calls synchronize yet it is not saving the changes. 下面的代码甚至调用了同步,但它没有保存更改。 What am I doing wrong here? 我在这里做错了什么?

- (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];
}

You are setting the key to the username and password, with the username/password string as the value. 您正在将密钥设置为用户名和密码,并使用用户名/密码字符串作为值。

So, you'll never be able to retrieve this data (unless you know the username and password already ;) ) 因此,您将永远无法检索此数据(除非您已经知道用户名和密码;))

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

Try swapping as shown above. 尝试如上所示进行交换。

You need to set your kTwitterUsernameKey like below 您需要像下面那样设置kTwitterUsernameKey

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

The general pattern for NSUserDefaults is like below NSUserDefaults的一般模式如下所示

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];
// retrieve an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM