如何保存UILabel信息

时间:2013-04-27 22:26:57

标签: ios uilabel

我有一个计算器,它将一个值与某个$ 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
}
}

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

2 个答案:

答案 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,我假设您可以将其保存为默认值字符串。