保存变量的值

时间:2014-05-20 12:39:48

标签: ios7 nsuserdefaults

以下是NSUserdefaults代码。

-(IBAction)SaveButton:(id)sender {
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    NSString* Assignment0Text = screen0.text;
    [defaults setObject:Assignment0Text forKey:@"Assignment0Text"];
    [defaults synchronize];
}

-(IBAction)LoadButton:(id)sender {

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString* temp0 = [defaults objectForKey:@"Assignment0Text"];
    screen0.text = temp0;

}

上面的代码表示程序只保存并加载textfield / label中的字符串值。

我的问题是,如何修改此代码以便NSUserDefaults可以保存并加载变量的值(在本例中为int& float),而不是textfield / label中的文本?因此,当我加载程序时,所有整数/浮点值都是相同的。不是在textfield / label内的文本中写的是相同的。屏幕显示的所有内容都是带有名为runningtotal的变量的浮点数。

screen0.text = [NSString stringWithFormat:@"%2.2f", runningtotal];

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你应该使用int等变量的包装器:

int value = 5; [defaults setObject:@(value) forKey:@"Assignment0Number"];

神奇的是NSUserDefaults无法存储像5这样的非对象值。您需要创建NSObject对象,将值存储在其中,然后将此对象保存到NSUserdefaults中。这就是当我写' @(值)'时会发生的事情。

如果更准确一点,@(value)[NSNumber numberWithInt:value]的字面值,由于NSNumberNSObject的对象和子类,因此现在可以存储该值。 / p>

编辑:

这是您可能想要的(我假设runningtotal是类变量):

-(IBAction)SaveButton:(id)sender {
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    [defaults setObject:@(runningtotal) forKey:@"Assignment0Text"];
    [defaults synchronize];
}

-(IBAction)LoadButton:(id)sender {

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSNumber* temp0 = [defaults objectForKey:@"Assignment0Text"];
    runningtotal = [temp0 intValue];

}