Dans l'un des exemples de code d'Apple, ils donnent un exemple de recherche:recherche est que les mots correspondants au début
for (Person *person in personsOfInterest)
{
NSComparisonResult nameResult = [person.name compare:searchText
options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)
range:NSMakeRange(0, [searchText length])];
if (nameResult == NSOrderedSame)
{
[self.filteredListContent addObject:person];
}
}
Malheureusement, cette recherche ne correspondra le texte au début. Si vous cherchez "John", cela correspondra à "John Smith" et "Johnny Rotten" mais pas à "John Peach" ou "John".
Y at-il un moyen de le changer afin qu'il trouve le texte de recherche n'importe où dans le nom? Merci.
en utilisant NSPredicate. – pxl
Fonctionne parfaitement, merci. J'ai fini par utiliser 'rangeOfString: options' puisque je compare avec plusieurs champs (person.firstName, person.lastName). –
@nevan vous pouvez mettre plusieurs comparaisons à l'intérieur d'un prédicat; il est à peu près équivalent à une clause WHERE sql: '[NSPredicate predicateWithFormat: @" nom CONTAINS [cd]% @ OR nom de famille CONTAINS [cd]% @ ", searchText, searchText];' –