Domanda

Ho un singolo oggetto NSDictionary che contiene un gran numero di oggetti personalizzati. Gli oggetti saranno di classe B o di classe C, entrambi ereditati dalla classe A. Se gli oggetti sono di tipo B, avranno un flag interno (kindOfCIsh) che verrà utilizzato per il raggruppamento futuro.

Come posso ottenere, in momenti diversi del mio programma, un NSDictionary (o NSArray) che contiene diversi raggruppamenti di quegli oggetti? In un caso, vorrò tutto B, ma un'altra volta vorrò tutti gli oggetti C, più gli oggetti B che soddisfano (kindOfCIsh == true).

Esiste un modo semplice per accedere a questi sottoinsiemi? Forse usando i predicati del filtro? Ovviamente posso scorrere l'intero dizionario e creare manualmente il sottoinsieme richiesto, ma ho la sensazione che esista un modo migliore.

Qualsiasi aiuto è apprezzato.

È stato utile?

Soluzione

[[myDictionary allValues] filteredArrayUsingPredicate: pred];

Altri suggerimenti

Puoi usare le categorie

il codice è qualcosa del genere

@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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top