以下是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];
答案 0 :(得分:0)
如果我理解你的问题,你应该使用int
等变量的包装器:
int value = 5;
[defaults setObject:@(value) forKey:@"Assignment0Number"];
神奇的是NSUserDefaults
无法存储像5
这样的非对象值。您需要创建NSObject
对象,将值存储在其中,然后将此对象保存到NSUserdefaults
中。这就是当我写' @(值)'时会发生的事情。
如果更准确一点,@(value)
是[NSNumber numberWithInt:value]
的字面值,由于NSNumber
是NSObject
的对象和子类,因此现在可以存储该值。 / 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];
}