1

我正在使用模拟器,当应用程序开始检查它是​​否第一次打开时,我正在做这样的事情:

然后检查该键/值是否为空,以便此代码仅执行一次:

 NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if([standardUserDefaults objectForKey:@"first_time_cookie"] == nil)
    {
        [standardUserDefaults setBool:YES forKey:@"first_time_cookie"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

但是每次我运行程序时,它都会再次执行。知道这里出了什么问题吗?

4

4 回答 4

2

只是一个猜测:standardUserDefaults是零?

于 2012-07-26T18:56:09.293 回答
1

你可以做不同的!

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], @"first_time_cookie"];
[defaults registerDefaults:dict];

if ([defaults boolForKey:@"first_time_cookie"] == NO){
   [defaults setBool:YES forKey:@"first_time_cookie"];
   [defaults synchronize];
}
于 2012-07-26T19:01:39.433 回答
0

a bool is not an object. This should work

if([standardUserDefaults boolForKey:@"first_time_cookie"] == NO)
{
    [standardUserDefaults setBool:YES forKey:@"first_time_cookie"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
于 2012-07-26T18:59:11.943 回答
0

尝试使用

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"first_time_cookie"] == false)

让我知道它是否有效,

贡浩

于 2012-07-26T19:07:23.117 回答