2010-08-09 17 views
7

iPhone uygulamasındaki NSUserDefault s listesinin tamamında "yürümek" ve yalnızca belirli olanları silmek için bir yol var mı? Örneğin, belirli bir sözcükle başlayan tüm anahtar adları almak istiyorum. BöyleBelli bir kelimeyle başlayan tüm NSUserDefaults'ları sil

şey:

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

cevap

18

Sen dictionaryRepresentation bakabilirsiniz.

Daha fazla esneklik için NSPredicate genel bir eşleyici olarak kullanan bir uygulama.

@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 

Kullanımı:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@", @"something"]; 
[[NSUserDefaults standardUserDefaults] removeObjectsWithKeysMatchingPredicate:pred]; 
0

seni tüm oturumları

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

kaldırmak istediğiniz sadece kullanmak bunun için bir çözüm var o

çalışacak
İlgili konular