NSUserDefaults是否会删除临时不需要的密钥?

时间:2012-06-05 21:15:16

标签: iphone objective-c ios xcode nsuserdefaults

我将所有数据存储在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是否会删除临时不需要的密钥?

3 个答案:

答案 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];