通过“substringToIndex”在UserDefaults中找到特殊键

时间:2012-06-05 19:50:36

标签: iphone objective-c ios xcode nsuserdefaults

我正在按特定前缀对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”,并将它们加载到一个数组中。有没有办法(编程)?

1 个答案:

答案 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);
  }
}