【问题标题】:Does NSUserDefaults delete keys, that are not needed temporarily?NSUserDefaults 是否会删除暂时不需要的键?
【发布时间】:2012-06-05 21:15:16
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c ios xcode nsuserdefaults


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      没有,但是您在更新它们时是否致电[NSUserdefaults synchronize]

      【讨论】:

      • 好的,谢谢,我的错误.. 我正在寻找的密钥,从未写入 UserDefaults。 :)
      【解决方案3】:

      在存储您想要的内容时,您可能应该使用-synchronize 方法。我,即:

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

      【讨论】:

      • 不,除非您正在与读取相同首选项的不同进程协调(这是不寻常的),否则您不需要调用-synchronize
      猜你喜欢
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 2014-02-17
      • 2011-12-28
      • 2016-07-06
      • 2012-11-30
      • 2013-03-12
      相关资源
      最近更新 更多