Cocoaで大規模なNSDictionaryの特定のサブセットにアクセスするにはどうすればよいですか?
-
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
所属していません StackOverflow