有没有办法让我“遍历”我的iPhone应用中的所有NSUserDefault
列表,只删除某些?
例如,我想获得所有以某个单词开头的关键名称。
这样的事情:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"Dog*"];
答案 0 :(得分:18)
您可以查看dictionaryRepresentation
。
这是一个使用NSPredicate
作为通用匹配器以实现更大灵活性的实现。
@interface NSUserDefaults (JRAdditions)
- (void)removeObjectsWithKeysMatchingPredicate:(NSPredicate *)predicate;
@end
@implementation NSUserDefaults (JRAdditions)
- (void)removeObjectsWithKeysMatchingPredicate:(NSPredicate *)predicate {
NSArray *keys = [[self dictionaryRepresentation] allKeys];
for(NSString *key in keys) {
if([predicate evaluateWithObject:key]) {
[self removeObjectForKey:key];
}
}
}
@end
用法:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@", @"something"];
[[NSUserDefaults standardUserDefaults] removeObjectsWithKeysMatchingPredicate:pred];
答案 1 :(得分:0)
我有解决方案,只需在你要删除所有会话的地方使用它
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
它会起作用