Comment puis-je accéder à des sous-ensembles spécifiques d'un grand NSDictionary dans Cocoa?

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

  •  22-07-2019
  •  | 
  •  

Question

J'ai un seul objet NSDictionary qui contient un grand nombre d'objets personnalisés. Les objets seront soit de classe B, soit de classe C, les deux héritant de la classe A. Si les objets sont de type B, ils auront un indicateur interne (kindOfCIsh) qui sera utilisé pour le regroupement futur.

Comment puis-je, à différents moments de mon programme, obtenir un NSDictionary (ou NSArray) contenant différents groupes de ces objets? Dans un cas, je veux tout B, mais une autre fois, je veux tous les objets C, plus les objets B qui satisfont (kindOfCIsh == true).

Existe-t-il un moyen simple d'accéder à ces sous-ensembles? Peut-être en utilisant des prédicats de filtre? Je peux bien sûr parcourir le dictionnaire en entier et créer le sous-ensemble requis manuellement, mais j’ai le sentiment qu’il existe un meilleur moyen.

Toute aide est appréciée.

Était-ce utile?

La solution

[[myDictionary allValues] filterArrayUsingPredicate: pred];

Autres conseils

Vous pouvez utiliser les catégories

le code est quelque chose comme ça

@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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top