Cocoaで大規模なNSDictionaryの特定のサブセットにアクセスするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/442513

  •  22-07-2019
  •  | 
  •  

質問

多数のカスタムオブジェクトを含む単一のNSDictionaryオブジェクトがあります。オブジェクトはクラスBまたはクラスCのいずれかで、両方ともクラスAから継承します。オブジェクトがタイプBの場合、オブジェクトは将来のグループ化に使用される内部フラグ(kindOfCIsh)を持ちます。

プログラムの異なる時点で、それらのオブジェクトの異なるグループを含むNSDictionary(またはNSArray)を取得するにはどうすればよいですか?ある場合には、すべてのBが必要になりますが、別の場合には、すべてのCオブジェクトに加えて(kindOfCIsh == true)を満たすBオブジェクトが必要になります。

これらのサブセットにアクセスする簡単な方法はありますか?おそらくフィルター述語を使用していますか?もちろん、辞書全体をループして必要なサブセットを手動で構築することもできますが、もっと良い方法があると感じています。

ご協力いただければ幸いです。

役に立ちましたか?

解決

[[myDictionary allValues] FilteredArrayUsingPredicate:pred];

他のヒント

カテゴリを使用できます

コードは次のようなものです

@interface NSDictionary (dictionaryForClass)

  -(NSMutableDictionary *) dictionaryWithObjectsKindOfClass:(Class)myClass;

@end

@implementation NSDictionary (dictionaryForClass)

-(NSMutableDictionary *) dictionaryWithObjectsKindOfClass:(Class)myClass;
{
  NSMutableDictionary *ret = [[[NSMutableDictionary alloc] init] autorelease];

  for (id object in self) {
    if ([object isKindOfClass:myClass]) {
       [ret addObject:object];
    }  
  }  
  return ret;

}

@end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top