我有下面的代码,它使用步进器来设置 myLabel 的值。我将其设置为将值存储到 NSUserDefaults。
1)我还需要将步进值设置为与我放入标签的数字相同的数字。有人可以建议如何做到这一点吗?(我已经在我认为应该是的代码中添加了注释。)
2)我还想在加载 saveString 之前检查它是否实际设置,如果没有,请设置默认值。您能否建议如何实现这一目标?
谢谢。
- (void)viewWillAppear:(BOOL)animated
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *loadString = [defaults objectForKey:@"saveString"];
self.myLabel.text = loadString;
// Need to set the stepper value to that in loadString
}
- (IBAction)stepChanged:(id)sender {
NSString *saveString = [NSString stringWithFormat:@"%d",
[[NSNumber numberWithDouble:[(UIStepper *)sender value]] intValue]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:saveString forKey:@"saveString"];
[defaults synchronize];
self.myLabel.text = saveString;
}
我已将代码更新如下:-
- (void)viewWillAppear:(BOOL)animated
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSNumber *loadNumber = [defaults objectForKey:@"saveNumber"];
self.myLabel.text = [NSString stringWithFormat:@"%@",loadNumber];
UIStepper *stepper = [[UIStepper alloc] init];
stepper.value = [NSNumber numberWithDouble:loadNumber];
}
- (IBAction)stepChanged:(id)sender {
NSNumber *saveNumber = [NSNumber numberWithDouble:[(UIStepper *)sender value]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:saveNumber forKey:@"saveNumber"];
[defaults synchronize];
self.myLabel.text = [NSString stringWithFormat:@"%@",saveNumber];
}
但是,行 'stepper.value = [NSNumber numberWithDouble:loadNumber];' 错误'发送'NSNumber *__strong'到不兼容类型'double''的参数的错误。我认为步进器只会接受一个double,但我不确定我做错了什么来设置它。
我需要实现以下目标:- 1) 在 NSUserDefaults 中为 saveNumber 设置一个默认值,在用户做出更改之前将使用该默认值。2) 在加载或视图出现时,使用 saveNumber 设置 stepper.value 和 myLabel 的值。3) 确保当使用步进器更改时,myLabel 中的值会更新,并且 NSUserDefaults saveNumber 也会更新。
谁能告诉我哪里出错了,请帮助纠正我的代码?
此外,我在键入此内容时刚刚意识到的是,在最终的应用程序中,我将在不同的 viewController 上进行此设置,而不是使用 NSUserDefaults savedNumber 值。考虑到这一点,您能否让我知道如何确保 savedNumber 不仅可用于此视图控制器,而且可用于我需要这些值的任何其他视图控制器?
非常感谢。