我正在按特定前缀对UserDefault密钥进行分组。
e.g。
[NSUserDefaults standardUserDefaults] setInteger: 1 forKey: @"prefix1_someText_Key"]
[NSUserDefaults standardUserDefaults] setInteger: 2 forKey: @"prefix2_someText_Key"]
[NSUserDefaults standardUserDefaults] setInteger: 3 forKey: @"prefix4_someText_Key"]
//.....
现在,我想找到所有的密钥,例如以“prefix”,并将它们加载到一个数组中。有没有办法(编程)?
答案 0 :(得分:4)
您可以使用基础NSDictionary来查找合适的密钥:
NSString *myPrefix = @"prefix";
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = [defaults dictionaryRepresentation];
NSMutableArray *keysWithPrefix = [NSMutableArray array]
for (NSString *key in dict.keyEnumerator) {
if ([key hasPrefix: myPrefix]) {
[keysWithPrefix addObject: key];
}
}
// now keysWithPrefix contains all matching keys
<强>更新强> 出于调试原因,您可以添加日志以查看正在删除的键:
for (NSString *key in dict.keyEnumerator) {
if ([key hasPrefix: myPrefix]) {
[keysWithPrefix addObject: key];
} else {
NSLog(@"Dropping key %@", key);
}
}