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 に答える