2011-11-16 40 views
0

我有一个应用程序使用NSURLConnection从远程服务器加载json。一旦它完成加载(调用connectionDidFinishLoading),我想记录它是否是该应用程序的首次启动。 所以在connectionDidFinishLoading我这样做:布尔未记录在NSUserDefaults

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
BOOL firstLaunch = [defaults boolForKey:@"screen_firstLaunch"]; 
NSLog(@"First launch : %d",firstLaunch); 
[defaults setBool:YES forKey:@"screen_firstLaunch"]; 

并显示“首次启动:0”每次....

所以我想这可能是因为它是在另一个线程,所以我尽量将代码驱逐到一个函数中,我使用performSelectorOnMainThread在connectionDidFinishLoading中调用,但我得到的结果相同...

请别人帮我,我要疯了!

+0

奥利弗是对的。添加内容到userdefaults后需要同步 – Anand

回答

3

请记住在将密钥设置为默认值后再调用[defaults synchronize];

+0

这就是我错过的,谢谢!虽然,我不知道为什么它以前没有使用过... – LeGom

+0

@Julien:这是因为操作系统决定何时写,如果你不强迫他。你可能已经在一个测试案例中操作系统决定编写首选项。 – Oliver