我将所有数据存储在NSUserDefaults中。 现在我试图在Array中存储一些具有特定前缀的键。因此,我首先在Dictionary中加载UserDefaults。
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 :(得分:1)
不是没有,NSUserDefault是持久存储, 请阅读以下答案,它有一个很好的解释 How persistent is [NSUserDefaults standardUserDefaults]?
答案 1 :(得分:0)
不,但是在更新它们时是否正在调用[NSUserdefaults synchronize]
?
答案 2 :(得分:0)
在存储您想要的内容时,您可能应该使用-synchronize
方法。 I,E:
[[NSUserDefaults standardUserDefaults] setValue:someDictionary forKey:@"someKey"];
[[NSUSerDefaults standardUserDefaults] synchronize];