1

我将所有数据存储在 NSUserDefaults 中。现在我正在尝试将一些具有特定前缀的键存储在一个数组中。因此,我首先将 UserDefaults 加载到 Dictionary 中。

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 是否会删除暂时不需要的键?

4

3 回答 3

1

不,它不是,NSUserDefault 是一个持久性存储,请阅读以下答案它有一个很好的解释 [NSUserDefaults standardUserDefaults] 的持久性如何?

于 2012-06-05T21:18:16.770 回答
0

[NSUserdefaults synchronize]不,但是您在更新它们时会打电话吗?

于 2012-06-05T21:16:42.960 回答
0

-synchronize在存储所需内容时,您可能应该使用方法。IE:

[[NSUserDefaults standardUserDefaults] setValue:someDictionary forKey:@"someKey"];
[[NSUSerDefaults standardUserDefaults] synchronize];
于 2012-06-05T21:21:06.367 回答