删除NSUserDefaults以获取以。开头的键

时间:2016-03-20 07:05:20

标签: ios swift save nsuserdefaults

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

我知道其他编程语言的功能就是通过传递他们想要的前缀来获取每个字符串的特定开头:找到"NavView*"之类的所有字符串。 (用星星这样的标志来表示)

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

3 个答案:

答案 0 :(得分:8)

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

  • 迭代UserDefaults Dictionary的所有键。
  • 检查每个键是否有前缀" NavView"。
  • 如果key具有前缀,则删除该键的对象。
斯威夫特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];
    }
}

答案 1 :(得分:0)

您可以获取所有密钥并仅过滤以前缀开头的密钥。 请参阅示例 - Delete all my NSUserDefaults that start with a certain word

答案 2 :(得分:0)

Swift 5与Swift 4相同

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