IPhone SDK默认值NSUserDefaults
我已经将用户默认设置为为为UISlider记录一个整数,问题是,如果用户刚刚安装了应用程序,则整数为零或NULL。有没有办法检测它是否为NULL和整数 以下是我迄今为止的代码:IPhone SDK默认值NSUserDefaults,iphone,integer,nsuserdefaults,Iphone,Integer,Nsuserdefaults,我已经将用户默认设置为为为UISlider记录一个整数,问题是,如果用户刚刚安装了应用程序,则整数为零或NULL。有没有办法检测它是否为NULL和整数 以下是我迄今为止的代码: -(void)awakeFromNib { NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; senset = [prefs integerForKey:@"senset"]; senset = sensitivity.value; } - (I
-(void)awakeFromNib {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
senset = [prefs integerForKey:@"senset"];
senset = sensitivity.value;
}
- (IBAction) setSens {
senset = sensitivity.value;
}
- (IBAction) goBackopt {
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:senset forKey:@"senset"];
[prefs synchronize];
}
}
senset是整数。我尝试过这段代码,第一次它将其设置为25,但是如果我尝试覆盖它,它将不起作用,并一直将其设置为25:(
请帮忙:p
Harry只需请求objectForKey:。如果未设置,它将返回零
您的测试不起作用,因为IntegerWorkey:具有未设置的值将返回0,即零,即NULL。它们之间的差异仅对编译器存在。如果在正常使用情况下零不是有效值(即,您保存的首选项永远不会将此整数设置为零),则您可以进行检查
if( [prefs integerForKey:@"senset"] == 0){
[prefs setInteger:25 forKey:@"senset"];
}
编辑:呃,我想我有一个问题:当你试图覆盖它时,你是否为你的键(@“senset”)设置了一个整数值(25)?如果不是,则它将保持为零或零,并且每次检查时,它都会尝试将本地senset变量再次更改为25。您应该为每个首选项设置一个有效的默认值。当用户未设置此值时,将使用此值
NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
[defaults setObject:[NSNumber numberWithInt:25] forKey:@"senset"];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
[defaults setObject:[NSNumber numberWithInt:25] forKey:@"senset"];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];