Ich habe einen UISearchBar-Teil eines UISearchDisplayControllers, der zum Anzeigen von Suchergebnissen sowohl von lokalen CoreData- als auch von Remote-APIs verwendet wird. Was ich erreichen möchte, ist die "Verzögerung" der Suche auf der Remote-API. Derzeit wird für jedes vom Benutzer eingegebene Zeichen eine Anforderung gesendet. Wenn der Benutzer jedoch besonders schnell tippt, ist es nicht sinnvoll, viele Anfragen zu senden: Es wäre hilfreich zu warten, bis er aufgehört hat zu tippen. Gibt es einen Weg, dies zu erreichen?
Wenn Sie die Dokumentation lesen, sollten Sie warten, bis die Benutzer explizit auf die Suche tippen, aber ich finde sie in meinem Fall nicht ideal.
Performance-Probleme. Wenn Suchvorgänge sehr schnell ausgeführt werden können, können die Suchergebnisse während der Eingabe durch den Benutzer aktualisiert werden, indem die Methode searchBar: textDidChange: für das Delegatenobjekt implementiert wird. Wenn ein Suchvorgang jedoch länger dauert, sollten Sie warten, bis der Benutzer auf die Schaltfläche Suchen tippt, bevor Sie mit der Suche in der Methode searchBarSearchButtonClicked: beginnen. Führen Sie Suchvorgänge immer als Hintergrundthread durch, um zu vermeiden, dass der Hauptthread blockiert wird. Dadurch reagiert Ihre App während der Suche auf den Benutzer und bietet eine bessere Benutzererfahrung.
Das Senden vieler Anforderungen an die API ist kein Problem der lokalen Leistung, sondern nur das Vermeiden einer zu hohen Anforderungsrate auf dem Remoteserver.
Vielen Dank