¿Cómo puedo acceder a subconjuntos específicos de un NSDictionary grande en Cocoa?

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

  •  22-07-2019
  •  | 
  •  

Pregunta

Tengo un único objeto NSDictionary que contiene una gran cantidad de objetos personalizados. Los objetos serán de clase B o de clase C, los cuales heredarán de la clase A. Si los objetos son de tipo B, tendrán un indicador interno (kindOfCIsh) que se utilizará para la agrupación futura.

¿Cómo puedo, en diferentes momentos de mi programa, obtener un NSDictionary (o NSArray) que contiene diferentes agrupaciones de esos objetos? En un caso, querré todo B, pero en otra ocasión querré todos los objetos C, más los objetos B que satisfagan (kindOfCIsh == true).

¿Hay una manera simple de obtener acceso a estos subconjuntos? ¿Quizás usando predicados de filtro? Por supuesto, puedo recorrer todo el diccionario y construir el subconjunto requerido manualmente, pero tengo la sensación de que hay una mejor manera.

Cualquier ayuda es apreciada.

¿Fue útil?

Solución

[[myDictionary allValues] filterArrayUsingPredicate: pred];

Otros consejos

Puedes usar categorías

el código es algo así

@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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top