3

我正在按特定前缀对我的 UserDefault 键进行分组。

例如

[NSUserDefaults standardUserDefaults] setInteger: 1 forKey: @"prefix1_someText_Key"]
[NSUserDefaults standardUserDefaults] setInteger: 2 forKey: @"prefix2_someText_Key"]
[NSUserDefaults standardUserDefaults] setInteger: 3 forKey: @"prefix4_someText_Key"]
//.....

现在,我想找到所有以“前缀”开头的键,并将它们加载到一个数组中。有没有办法做到这一点(以编程方式)?

4

1 回答 1

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);
  }
}
于 2012-06-05T19:56:58.297 回答