2011-11-16 58 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