Ricerca in un NSArray di NSDictionary: uso di NSPredicate

Mi sono trovato a dover effettuare una ricerca di valori di alcune (ma non tutte) chiavi di oggeti NSDictionary all’interno di un NSArray.

L’utilizzo di NSPredicate permette di risolvere il problema in modo estremamente elegante e funzionale.

Assumendo che i valori del dizionario siano caratterizzati dalle chiavi key1 (un NSNumber), key2 (NSString) e key3 (NSString) e si vogliano cercare gli oggetti in cui key1 e key3 assumono certi valori il codice è il seguente:

int valore;
NSString stringa;

if ([array count] > 0) {
if ([[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(key1 == %d && key3 == %@)", valore, stringa]] count] > 0)
   // Value is present
}