Pergunta

Eu tenho um único objeto NSDictionary que contém um grande número de objetos personalizados. Os objectos será ou de classe B ou da classe C, sendo que ambos são herdados da Classe A. Se os objectos são de tipo B, eles terão uma bandeira interna (kindOfCIsh) que irá ser utilizado para agrupar futuro.

Como posso, em momentos diferentes em meu programa, obter um NSDictionary (ou NSArray) que contém diferentes agrupamentos desses objetos? Em um caso, eu quero que todos B, mas outra vez eu vai querer todos os objetos C, mais o B objetos que satisfazem (kindOfCIsh == true).

Existe uma simples maneira de obter acesso a esses subconjuntos? Talvez usando predicados de filtro? Eu posso, naturalmente, percorrer o dicionário inteiro e construir o subconjunto necessário manualmente, mas tenho a sensação de que há uma maneira melhor.

Qualquer ajuda é apreciada.

Foi útil?

Solução

[[myDictionary allvalues] filteredArrayUsingPredicate: pred];

Outras dicas

Você pode usar categorias

O código é algo como isto

@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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top