2012-04-13 2 views
0

Donc, fondamentalement, je veux utiliser un UISearchBar pour rechercher un tableau de noms. A l'intérieur du tableau des noms ont ce format:Comment rechercher une liste de noms dans iOS?

[PRÉNOM] ([NOM SECOND]) [NOM]

En utilisant

if (![string rangeOfString:seachTextPart].location == NSNotFound) 

J'ai réussi à rechercher la saisie de noms seulement la première NAME dans l'UISearchBar. Mais dès que j'entre dans un ESPACE je n'obtiens AUCUN RÉSULTAT.

Aussi, je veux être en mesure de rechercher en entrant seulement le nom de famille. Quelqu'un peut-il m'aider s'il vous plaît? Merci

+0

Veuillez marquer la bonne réponse ou sinon donner le commentaire pour pourquoi la réponse ne fonctionne pas pour vous. – Byte

Répondre

1

En supposant que le format est de suivre: name = @"[John]([James])[Smith]";

Recherche [name rangeOfString:@"John"] donnerait trouvé.

Searching [name rangeOfString:@"John "] céderais pas trouvé, puisque @"John " est pas Nom

Mais dans ce cas, [name rangeOfString:@"Smith"] céderais trouvé.

Essayez ceci: Retirez tous les espaces et les chaînes de minuscules

searchTerm = [[searchTerm stringByReplacingOccurrencesOfString:@" " withString:@""] lowercaseString]; 
    NSRange searchName = [[name lowercaseString] rangeOfString:searchTerm]; 

Si vous voulez tester, tout simplement le faire » if (searchName == 0) //it does not match

0

Code de Byte fonctionne à moins qu'ils tapent « John Smith » Si. vous voulez quelque chose de plus robuste, vous pouvez utiliser - (NSArray *)componentsSeparatedByString:(NSString *)separator et ensuite rechercher l'une des chaînes dans le tableau.Alors "John Smith" renverrait tous les Johns et tous les Smith

ici:

NSArray *theTerms = [searchTerm componentsSeparatedByString:@" "]; 

puis exécutez une boucle à travers tous theTerms et vérifiez contre vos noms en ajoutant ceux qui contiennent les termes de recherche à un tableau, puis de les afficher.

Questions connexes