0

我有一个计算器,可以将某个值乘以一定的美元汇率。用户可以编辑 $ 汇率,该值与用户输入的汇率相乘。这是我的代码:

    - (IBAction)edit
    {


        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Edit New Amount"
                                                        message:@"Enter new rate"
                                                       delegate:self
                                              cancelButtonTitle:@"Cancel"
                                              otherButtonTitles:@"Ok", nil];


        alert.alertViewStyle = UIAlertViewStylePlainTextInput;
        [[alert textFieldAtIndex:0] setKeyboardType:UIKeyboardTypeNumberPad];

        [alert show];



    }

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
        if (buttonIndex != alertView.cancelButtonIndex) {

    UITextField *field = [alertView textFieldAtIndex:0];
    field.placeholder = @"Enter New Rate";

    NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];

            if ([field.text rangeOfCharacterFromSet:set].location != NSNotFound)
            {


                UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Only numbers are allowed in this field."delegate:self cancelButtonTitle:@"OK."otherButtonTitles:nil];
                [errorAlert show];

                rate.text=@"";
            }
            else
            {

            rate.text = field.text;
            }
    }

else
{
    //Cancel
}
}

但是,当应用程序关闭并重新启动时,会显示旧费率,而不是用户输入的新费率。如何保存新的用户输入费率,以便它保留在应用程序中,即使重新启动也是如此?

4

2 回答 2

0

您是否尝试过创建一个新变量以在用户输入新输入时保存新输入,然后将新输入设置为该新变量?听起来它正在从输入中设置的最后一个变量重新启动。

于 2013-04-27T22:30:57.337 回答
0

如果您希望在应用程序关闭后保留该值,那么您必须将其存储在文件系统中的某个位置。最简单方便的方法是使用 NSUserDefaults:

//Storing in user defaults
[[NSUserDefaults standardUserDefaults] setObject:field.text forKey:RATE_KEY];
[[NSUserDefaults standardUserDefaults] synchronize];

//Retrieving (possibly in app start or viewdidload)
self.rate.text = [[NSUserDefaults standardUserDefaults] objectForKey:RATE_KEY];

使用 NSUserDefaults 的一个注意事项是它不支持存储每个对象类型,它支持 NSString、NSArray、NSNumber 等和原始类型。由于您在代码中使用了 NSStrings,我假设您可以将其作为字符串保存为默认值。

于 2013-04-27T22:41:42.360 回答