2012-07-26 54 views
1

我与模拟器使用的数据,并在应用程序启动检查它是否被打开了我第一次做这样的事情:IOS - 设置standardUserDefaults在运行模拟器不保存

然后检查是否该键/值是空的,所以,这个代码执行一次:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 

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

但我每次运行程序时,它再次执行。任何想法在这里出了什么问题?

回答

0

bool不是一个对象。这应该工作

if([standardUserDefaults boolForKey:@"first_time_cookie"] == NO) 
{ 
    [standardUserDefaults setBool:YES forKey:@"first_time_cookie"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 
+0

谢谢!现在尝试。 – GeekedOut 2012-07-26 18:59:57

+0

,但仍然不能很好地工作。 – GeekedOut 2012-07-26 19:03:51

+0

我刚刚编译了剪切,它在iOS 6模拟器上运行良好。 – zeiteisen 2012-07-26 19:09:05

2

只是猜测:standardUserDefaults是零?

+0

不是零...我更新了我的问题,以显示实例。 – GeekedOut 2012-07-26 18:59:15

+0

代码中没有其他错误。其他的东西在你的设置中被破坏了。 – 2012-07-26 22:14:29

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]; 
} 
+0

谢谢,你在那里做的NSDictionary是什么?你能解释一下它的功能吗? – GeekedOut 2012-07-26 19:05:09

+0

当然。你不需要测试它是否为零。该字典设置您的密钥的默认值。如果你有任何机会,改变你的价值观,它不会影响你的应用程序。这只是该应用第一次运行! – NSPunk 2012-07-26 19:08:09

0

尝试使用

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

,让我知道,如果它的工作原理,

卖力的

+0

它是“否”而不是“假”。最好在'!'而不是'== NO'的条件下。 – 2012-07-26 22:09:35

相关问题