Une grande partie de mon code est basée sur l'exemple TableSearch d'Apple, mais mon application contient 35 000 cellules à rechercher plutôt que quelques exemples dans l'exemple. Il n'y a pas beaucoup de documentation en ligne sur UISearchDisplayController car elle est relativement nouvelle. Le code que je utilise est la suivante:Ajustement de l'algorithme iPhone TableSearch pour éviter le retard de l'interface utilisateur
- (void)filterContentForSearchText:(NSString*)searchText {
/*
Update the filtered array based on the search text and scope.
*/
[self.filteredListContent removeAllObjects]; // First clear the filtered array.
/*
Search the main list for products whose type matches the scope (if selected) and whose name matches searchText; add items that match to the filtered array.
*/
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
for (Entry *entry in appDelegate.entries)
{
if (appDelegate.searchEnglish == NO) {
NSComparisonResult result = [entry.gurmukhiEntry compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame)
{
[self.filteredListContent addObject:entry];
}
}
else {
NSRange range = [entry.englishEntry rangeOfString:searchText options:NSCaseInsensitiveSearch];
if(range.location != NSNotFound)
{
[self.filteredListContent addObject:entry];
}
}
}}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[self filterContentForSearchText:searchString];
[self.view bringSubviewToFront:keyboardView];
// Return YES to cause the search result table view to be reloaded.
return YES;}
Mon problème est qu'il ya un peu de retard après chaque bouton est appuyé sur le clavier. Cela devient un problème de convivialité, car l'utilisateur doit attendre après avoir tapé chaque caractère que l'application recherche dans le tableau pour les résultats correspondants. Comment ce code peut-il être ajusté pour que l'utilisateur puisse taper continuellement sans aucun retard? Dans ce cas, le délai de rechargement des données peut être retardé, mais le clavier ne doit pas tenir le clavier en cours de saisie.
pas exactement ce que je cherche ... Je l'ai vu faire avant où les types d'utilisateurs et il y a un retard dans le chargement de la table mais il est séparé du clavier qui pourrait taper librement pour la grande base de données. – Kulpreet
Je viens d'upated ma réponse à quelque chose qui peut être plus pertinent –