2010-08-09 13 views
7

से शुरू होते हैं क्या मेरे आईफोन ऐप में सभी NSUserDefault एस की सूची के माध्यम से "चलने" का कोई तरीका है, और केवल कुछ हटाएं?मेरे सभी NSUserDefaults को हटाएं जो एक निश्चित शब्द

उदाहरण के लिए, मैं एक निश्चित शब्द से शुरू होने वाले सभी प्रमुख नाम प्राप्त करना चाहता हूं।

कुछ इस तरह:

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

उत्तर

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]; 
0

मैं सिर्फ इसका इस्तेमाल जहां सभी सत्रों

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

निकालना चाहते हैं इस के लिए समाधान मिल गया यह

काम करेंगे
संबंधित मुद्दे