我有一个计算器,它将一个值与某个$ rate相乘。用户可以编辑$ rate,并将该值乘以用户输入的费率。这是我的代码:
- (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
}
}
但是,当应用关闭并重新启动时,将显示旧费率,而不是新用户输入的费率。如何保存用户输入的新费率,以便在应用中保留,即使重新启动也是如此?
答案 0 :(得分:0)
您是否尝试创建新变量以在用户输入新输入时保留新输入,然后将新输入设置为该新变量?听起来它是从输入中设置的最后一个变量重新开始。
答案 1 :(得分: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,我假设您可以将其保存为默认值字符串。