Frage

Ich habe ein einziges NSDictionary Objekt, das eine große Anzahl von benutzerdefinierten Objekten enthält. Die Objekte werden entweder der Klasse B oder der Klasse C, von denen beide aus der Klasse A. erben Wenn die Objekte vom Typ B sind, werden sie ein internes Flag (kindOfCIsh) haben, die für die zukünftige Gruppierung verwendet wird.

Wie kann ich zu verschiedenen Zeiten in meinem Programm, erhalte eine NSDictionary (oder NSArray), die verschiedenen Gruppierungen dieser Objekte enthält? In einem Fall, werde ich alle B will, aber ein anderes Mal werde ich alle C-Objekte will, sowie die B-Objekte, die (kindOfCIsh == true) erfüllen.

Gibt es eine einfache Möglichkeit, den Zugriff auf diese Teilmengen zu bekommen? Vielleicht mit Filter Prädikate? Ich kann natürlich Schleife durch das gesamte Wörterbuch und bauen Sie die gewünschte Teilmenge manuell, aber ich habe das Gefühl, dass es einen besseren Weg gibt.

Jede Hilfe ist willkommen.

War es hilfreich?

Lösung

[[myDictionary allValues] filteredArrayUsingPredicate: pred];

Andere Tipps

Sie können Kategorien verwenden

der Code ist so etwas wie diese

@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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top