2010-05-04 4 views
11

Est-il possible en Objective-C de rechercher dans un tableau d'objets les propriétés de l'objet contenu si les propriétés sont de type string? Par exemple, j'ai un objet NSArray d'objets Person. Par exemple, j'ai un objet NSArray. La personne a deux propriétés, NSString * firstName et NSString * lastName. Quelle est la meilleure façon de rechercher dans le tableau pour trouver tout le monde qui correspond à «Ken» n'importe où dans les propriétés firstName OU lastName?Comment rechercher rapidement un tableau d'objets dans Objective-C

Répondre

-1

Vous devrez effectuer une recherche linéaire, en comparant chaque entrée du tableau pour voir si elle correspond à ce que vous cherchez.

+0

mauvaise réponse .... (vous ne devriez pas faire, puisque vous avez NSPredicate) –

25

essayer quelque chose comme ceci:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName==%@ OR lastName==%@",@"Ken",@"Ken"]; 
NSArray *results = [allPersons filteredArrayUsingPredicate:predicate]; 
+1

propre. simple. THX. –

2

Vous pouvez simplement utiliser NSPredicate pour filtrer votre recherche de tableau de résultat réel:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.property_name contains[c] %@",stringToSearch]; 
filteredPendingList = [NSMutableArray arrayWithArray:[mainArr filteredArrayUsingPredicate:predicate]]; 
NSSortDescriptor *sortDescriptor; 
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"property_name" 
               ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
NSArray *sortedArray; 
sortedArray = [filteredPendingList sortedArrayUsingDescriptors:sortDescriptors]; 

Ainsi, vous obtiendrez le tableau trié avec le résultat filtré. nom_propriété ci-dessus est le nom de la variable à l'intérieur de votre objet sur lequel vous souhaitez effectuer votre opération de recherche. J'espère que cela vous aidera.

+1

Vous pouvez "simplement" ... écrire 7 lignes de code! lol – tothemario

Questions connexes