2015-09-03 2 views
-1

J'ai un NSArray qui contient l'objet NSDictionary avec les touches { « name », « âge », « poids »} où le nom de la clé est NSString, l'âge est NSInteger, le poids est flotter ValeurFiltre NSDictionary de NSArray

Je dois faire un filtrage du NSArray avec les conditions suivantes 1.name contient « abc » 2.age en dessous de 18 3.Weight moins de 50

réponse sera apprécié

+0

NSPredicate * prédicat = [NSPredicate predicateWithFormat: @ "SELF.name CONTIENT [c]% @ ET SELF.age.integerValue <=% d ET SELF.weight.floatValue <% f", @ "abc", 18, 50.]; – Larme

Répondre

0

Cela fonctionne mais pas élégant du tout.

NSMutableArray *filteredArray = [[NSMutableArray alloc]init]; 
for (NSDictionary *dic in myArray){ 

int age = [[dic objectForKey:@"age"]intValue]; 

    if (age < 18){ 

     float weight = [[dic objectForKey:@"weight"]floatValue]; 
     if (float < 50){ 

     string name = [dic objectForKey:@"name"]; 
     if (![string rangeOfString:@"bla"].location == NSNotFound) { 
      [filteredArray addObject:dic]; 
     } 

     } 
    } 

}

L'autre solution élégante est d'utiliser le bloc d'énumération et prédicats pour vérifier le contenu de votre dictionnaire, mais je suis assez mal à l'aise en C objectif de le faire.