Delete all my NSUserDefaults that start with a certain word

前端 未结 2 757
萌比男神i
萌比男神i 2021-01-02 17:20

Is there a way for me to \"walk\" through a list of all the NSUserDefaults in my iPhone app, and only delete certain ones?

For example, I\'d like to get

相关标签:
2条回答
  • 2021-01-02 17:44

    i Got solution for this just use it where you want to remove all sessions

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

    it will work

    0 讨论(0)
  • 2021-01-02 17:48

    You can look through the dictionaryRepresentation.

    Here's an implementation which uses NSPredicate as a generic matcher for greater flexibility.

    @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
    

    Usage:

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@", @"something"];
    [[NSUserDefaults standardUserDefaults] removeObjectsWithKeysMatchingPredicate:pred];
    
    0 讨论(0)
提交回复
热议问题