2012-03-15 115 views
0

我的NSUserDefaults在應用運行或最小化時正常工作。但是,如果我殺了應用程序並重新啓動它,返回的對象是null。代碼:即使使用同步,NSUserDefaults也不會持續存在

colorDefault = [NSUserDefaults standardUserDefaults]; 
[colorDefault setObject:myColor2 forKey:@"fieldKey"]; 
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:myColor2, @"fieldKey", nil]; 

[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; 
//[[NSUserDefaults standardUserDefaults] synchronize]; 

[colorDefault synchronize]; 

我打電話[[NSUserDefaults standardUserDefaults] synchronize]在我applicationDidEnterBackground並在applicationWillTerminate,沒有成功。我NSLogged這兩種方法,當我殺了應用程序,我注意到只有DidEnterBackground被稱爲..

感謝您的任何幫助!

+1

顯示在正在返回nil對象,包括它是從哪裏調用的代碼。另外,在你的應用程序中的上述代碼?你認爲registerDefaults:應該做什麼? – jrturton 2012-03-15 17:40:50

+2

什麼是myColor2變量類型?你有沒有閱讀這裏的參考https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html關於registerDefaults如何工作的細節? – 2012-03-15 17:45:14

+0

不知何故,我沒有找到這個較舊的帖子,但我有一個IDENTICAL場景:[here](http://stackoverflow.com/questions/6349648/nsuserdefaults-wont-save-permanantly) 除了我打電話給我在viewDidLoad和viewWillAppear(viewDidLoad每次啓動時都會調用viewDidLoad,所以它顯然需要在那裏) – Gravemind 2012-03-15 20:21:08

回答

0

嗯......我認爲你的代碼應該更簡單。

這是什麼,我寫NSUserDefault和檢索它:

// write 
[[NSUserDefaults standardUserDefaults] setObject:@"aString" forKey:@"aKey"]; 

// read 
[[NSUserDefaults standardUserDefaults] objectForKey:@"aKey"]; 

的setObject是不是唯一的選擇:setBool,的setFloat,setInteger並在另一側boolForKey,floatForKey,integerForKey都一樣好。

不要忘記設置Settings.bundleaKey在您的項目:

<dict> 
<key>Key</key> 
<string>aKey</string> 
<key>DefaultValue</key> 
<false/> 
</dict> 

希望這有助於...

+0

對不起。你提到的所有東西都是有效的,但它最終是這樣的: 'String == @「Blue」//而不是 String isEqualToString:@「Blue」' 怪異的如何在關閉應用程序前正常工作。但是,後話改變了它的思想。再次感謝! – Gravemind 2012-03-15 21:35:42

+0

啊......我明白了。比較字符串時總是使用isEqualToString:似乎==運算符比較對象地址而不是它們的內容! (歡迎你^ _ ^) – Beppe 2012-03-15 23:26:52

+0

我建議你閱讀文檔registerDefaults:用於與setValue不同的東西:forKey:http://developer.apple.com/library/mac/documentation/Cocoa/Reference/基金會/班/ NSUserDefaults_Class /參考/#的reference.html // apple_ref/OCC/instm/NSUserDefaults的/ registerDefaults: – Omer 2013-07-08 19:04:39

相關問題