我想删除NSUserDefaults
中存储的以"NavView"
开头的键的字符串。
我考虑过使用hasPrefix()
方法,但我似乎无法弄明白。
我知道其他编程语言的功能就是通过传递他们想要的前缀来获取每个字符串的特定开头:找到"NavView*"
之类的所有字符串。 (用星星这样的标志来表示)
除了将所有对象存储在一个数组中并保存之外,我有什么想法可以做到这一点? 提前谢谢!
答案 0 :(得分:8)
UserDefaults
是一种键值对持久存储。要解决您的问题,您必须按照以下步骤操作:
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)
}
}