2012-06-05 51 views
1

我將所有數據存儲在NSUserDefaults中。 現在我試圖在數組中存儲一些帶有特定前綴的鍵。因此,我首先在一個字典中加載UserDefaults。NSUserDefaults是否刪除臨時不需要的密鑰?

NSString *myPrefix = @"prefix"; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSDictionary *dict = [defaults dictionaryRepresentation]; 
for (NSString *keyWithPrefix in dict.keyEnumerator) { 
    if ([keyWithPrefix hasPrefix: myPrefix]) { 
     [relevantKeys addObject: keyWithPrefix]; 
    } 
} 

問題是:當我打印「dict」(代表UserDefaults)時。有一些鑰匙丟失。 NSUserDefaults是否刪除臨時不需要的密鑰?

回答

0

不,但是當你更新它們時,你打電話給[NSUserdefaults synchronize]嗎?

+0

好的,謝謝,我的錯誤..鑰匙,我正在尋找,從未寫入UserDefaults。 :) – smudo78

0

存儲你想要的東西時,你或許應該使用-synchronize方法。我,電子:

[[NSUserDefaults standardUserDefaults] setValue:someDictionary forKey:@"someKey"]; 
[[NSUSerDefaults standardUserDefaults] synchronize]; 
+0

不,除非您正在協調讀取相同首選項的不同進程(這是不尋常的),您不應該調用'-synchronize'。 –