2015-07-19 24 views
0

當我退出應用程序時,存儲在NSUserDefaults中的值不會保存。我保存了這樣的值:應用程序退出後NSUserDefaults不保存

[[NSUserDefaults standardUserDefaults] setValue:@"enabled" forKey:@"notifications"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

即使應用程序退出後,如何存儲NSUserDefaults的某些內容?

這是我如何檢索值:

[[NSUserDefaults standardUserDefaults] valueForKey:@"notifications"] 

前兩行不跑,因爲我把他們當按下按鈕來運行。當我轉到不同的視圖並返回到帶有按鈕的視圖時,它會返回我設置的值。

我明白了什麼是錯的。我在第一個視圖中有此代碼並假定它正常工作:

NSUserDefaults *Def = [NSUserDefaults standardUserDefaults]; 
NSString *Ver = [Def stringForKey:@"Version"]; 
NSString *CurVer = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey]; 
if(Ver == nil || [Ver compare:CurVer] != 0) 
{ 
    if(Ver == nil) 
    { 
     [[NSUserDefaults standardUserDefaults] setValue:@"disabled" forKey:@"notifications"]; 
    } 
} 
+1

哪裏是你把你的setValue價值寫?現在,您將其設置爲「已啓用」的字符串。你如何參考它? – Umitk

+0

什麼時候該應用程序退出,以及如何運行相關的代碼(您確定它確實運行)? – Wain

+0

什麼是nsuserdefaults的「通知」鍵的打印輸出? –

回答

2

您正在使用錯誤的方法。

valueForKeysetValue:forKey:是與Key Value Coding有關的方法,並且與在NSUserDefaults中設置持久數據無關。

您需要與

[[NSUserDefaults standardUserDefaults] objectForKey:@"notifications"]; 

來閱讀你的價值觀,並與

[[NSUserDefaults standardUserDefaults] setObject:@"enabled" forKey:@"notifications"]; 
+0

應用程序退出後,它不會保存它。 – somepers

+0

@somepers我沒有在我的答案中包含這個,但是如果您在設置新對象後(即默認值有機會自動同步之前)立即終止應用程序,您仍然需要同步調用。 –

+0

是的,我保持這些線路,但它仍然無法正常工作。 – somepers

相關問題