删除以 开头的键的 NSUserDefaults

Remove NSUserDefaults for keys starting with

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

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

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

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

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

  • 遍历 UserDefaults 字典的所有键。
  • 检查每个键是否有前缀 "NavView"。
  • 如果键有前缀,则删除该键的对象。

Swift 4:

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

Objective C :

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];

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

Swift 5 等同于 Swift 4

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