Удалить все мои NSUserDefaults, которые начинаются с определенного слова - PullRequest
7 голосов
/ 09 августа 2010

Есть ли способ для меня "просмотреть" список всех NSUserDefault в моем приложении для iPhone и удалить только определенные?

Например, я хотел бы получить все имена клавиш, начинающиеся с определенного слова.

Примерно так:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"Dog*"];

Ответы [ 2 ]

18 голосов
/ 09 августа 2010

Вы можете просмотреть 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];
0 голосов
/ 12 декабря 2015

я получил решение для этого, просто используйте его там, где вы хотите удалить все сеансы

 NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

это будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...