【问题标题】:Remove NSUserDefaults for keys starting with删除以开头的键的 NSUserDefaults
【发布时间】:2016-07-06 18:50:03
【问题描述】:

我想为以"NavView" 开头的键删除存储在NSUserDefaults 中的字符串。
我想过使用hasPrefix() 方法,但我似乎无法弄清楚。

我知道其他编程语言具有以下功能,例如通过传递他们希望它具有的前缀来获取具有特定开头的每个字符串:查找所有带有 "NavView*" 或其他内容的字符串。 (使用星号等符号表示)

除了将所有对象存储在一个数组中并保存之外,我有什么想法可以做到这一点吗?
提前致谢!

【问题讨论】:

    标签: ios swift save nsuserdefaults


    【解决方案1】:

    Swift 5 与 Swift 4 相同

    for key in UserDefaults.standard.dictionaryRepresentation().keys {
                if key.hasPrefix("NavView") {
                    UserDefaults.standard.removeObject(forKey: key)
                }
            }
    

    【讨论】:

      【解决方案2】:

      UserDefaults 是一种键值对持久存储。要解决您的问题,您必须按照以下步骤操作:

      • 遍历 UserDefaults Dictionary 的所有键。
      • 检查每个键都有前缀“NavView”。
      • 如果键有前缀,则删除该键的对象。

      斯威夫特 4:

      for key in UserDefaults.standard.dictionaryRepresentation().keys {
          if key.hasPrefix("NavView"){
              UserDefaults.standard.removeObject(forKey: key)
          }
      }
      

      目标 C:

      NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
      
      for (NSString *key in [userDef dictionaryRepresentation].allKeys) {
          if ([key hasPrefix:@"start"]) {
              [userDef removeObjectForKey:key];
          }
      }
      

      【讨论】:

      • 这看起来很有希望。我不知道.keys。我会试试的,已经谢谢了。
      • 这是我的荣幸 :)
      【解决方案3】:

      您可以获取所有键并仅过滤以前缀开头的键。 见例子 - Delete all my NSUserDefaults that start with a certain word

      【讨论】:

        猜你喜欢
        • 2011-03-27
        • 1970-01-01
        • 2017-10-04
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        • 2016-03-05
        • 1970-01-01
        • 2018-03-07
        相关资源
        最近更新 更多