【问题标题】:IPhone SDK Default NSUserDefaultsiPhone SDK 默认 NSUserDefaults
【发布时间】:2010-04-10 18:35:27
【问题描述】:

我已经将用户默认设置为记录 UISlider 的整数,问题是,如果用户刚刚安装了应用程序,那么整数为零或 NULL。有没有办法用整数检测它是否 = NULL?

这是我到目前为止的代码:

-(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。:(

    if ( [prefs integerForKey:@"senset"] == NULL ) {
    senset = 25;    
}

请帮忙:P

哈利

【问题讨论】:

    标签: iphone integer nsuserdefaults


    【解决方案1】:

    您应该为每个偏好设置一个有效的默认值。当用户未设置时,将使用此值。

    NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
    [defaults setObject:[NSNumber numberWithInt:25] forKey:@"senset"];
    [[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
    

    【讨论】:

      【解决方案2】:

      只需请求 objectForKey:。如果未设置,则返回 nil。

      您的测试不起作用,因为 integerForKey: 未设置值将返回 0,即 nil,即 NULL。它们之间的区别只存在于编译器中。

      【讨论】:

        【解决方案3】:

        如果在正常使用情况下零不是有效值(即您保存的首选项永远不会将此整数设置为零),那么您可以检查

        if( [prefs integerForKey:@"senset"] == 0){
            [prefs setInteger:25 forKey:@"senset"];
        }
        

        编辑:错误,我想我有一个问题:当您尝试覆盖它时,您是否为您的键(@“senset”)设置了一个整数值(25)?如果不是,那么它将保持为零或零,并且每次您检查它都会尝试将您的本地 senset 变量再次更改为 25。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-03
          • 2011-12-10
          • 1970-01-01
          • 2013-02-09
          • 1970-01-01
          • 2013-01-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多