使用NSUserDefaults自动保存值

时间:2013-10-25 15:37:34

标签: ios uitextfield nsuserdefaults

我有一个带有两个UITextField的应用程序,用户输入一个整数,然后使用用户输入的值调用方法。但是当我完全关闭应用程序时,值将被删除。我想更改它以保存用户在关闭时输入的值,并在重新打开应用程序时加载它。我尝试使用NSUserDefault,它工作正常(使用保存和加载按钮),但我想让它自动进行,而不按任何按钮。我看到其他人用AppDelegate.m中的基本方法来做,但我对此一无所知,因此我根本不理解它。

我在网上看到了很多教程,但我不理解其中的任何一个,请帮助,并给出详细的答案,谢谢:)

3 个答案:

答案 0 :(得分:1)

继续使用NSUserDefaults,没有更好的方法来实现您的目标。

在您的情况下,只需在UITextField上设置一个代理,每次更改值时,请将其保存在NSUserDefaults中。这样,您就不会有任何按钮,NSUserDefaults将始终包含最后一个值。

答案 1 :(得分:1)

你使用保存按钮吗?然后只需在UITextField的text changed事件中应用相同的代码,如下所示:

[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

这意味着当文本在字段中更改时,'txtFieldDidChange'中的代码将运行。这是您写入NSUSerDefaults

的地方

答案 2 :(得分:0)

你快到了。只需定义两个功能,一个用于保存两个字符串,另一个用于加载它们。

    -(void)saveTextFieldValues() {
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

        // saving
        [prefs setObject:self.firstTextField.text forKey:@"FirstTextFieldKey"];
        [prefs setObject:self.secondTextField.text forKey:@"SecondTextFieldKey"];

        [prefs synchronize];
     }

-(void)loadTextFieldValues() {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    //Load textField texts

    if ([prefs stringForKey:@"FirstTextFieldKey"]):
        self.firstTextField.text = [prefs stringForKey:@"FirstTextFieldKey"];

    if ([prefs stringForKey:@"SecondTextFieldKey"]):
        self.secondTextField.text = [prefs stringForKey:@"SecondTextFieldKey"];

}

然后在回调中调用saveTextFieldValues(当用户更改其中一个textFields时),并在创建textFields后立即调用loadTextFieldValues