我有以下代码。然而,线
stepper.value = [NSNumber numberWithDouble:loadNumber];
错误“发送NSNumber *__strong
到不兼容类型'double'的参数”。我认为步进器只会接受双倍,但我不确定我做错了什么来设置它。
我需要实现的是以下几点: -
NSUserDefaults
1) 在for中设置一个默认值saveNumber
,直到用户做出更改为止。
2) 在加载或视图出现时,用于saveNumber
设置 和 的stepper.value
值myLabel
。
3) 确保当使用步进器更改时,值会在 中更新myLabel
,并且NSUserDefaults
saveNumber
也会更新。
谁能告诉我哪里出错了,请帮助纠正我的代码?
此外,我刚刚意识到,在最终的应用程序中,我将在不同的 viewController 上进行此设置,而不是使用NSUserDefaults
savedNumber 值的那个。考虑到这一点,您能否让我知道如何确保 savedNumber 不仅可用于此视图控制器,而且可用于我需要这些值的任何其他视图控制器?
非常感谢。
- (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];
}
我有一个悬而未决的问题是,如果没有设置任何值,我将无法获得默认值!
我在 AppDelegate.m 中有以下代码:-
NSDictionary *defaults = @{ @"saveNumber": @8 };
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
当应用程序首次启动时(以及每次使用步进器之前),看到的值为“null”。
有任何想法吗?