У меня была проблема, которую я откладывал, но сейчас самое время.
У меня есть базовая словарная программа. У него есть UISearchBar и UITableView. Он работает так, как должен, за исключением того, что при запуске на устройстве он вызывает отставание клавиатуры. (Симулятор в порядке, конечно) У меня есть два типа поиска. По мере ввода и возврата. Я считаю, что для возврата результатов обеим операциям требуется примерно одинаковое время, но при вводе с клавиатуры клавиатура задерживается.
У меня есть UISearchBar textDidChange, который принимает searchText и отправляет его в метод поиска, который выполняет все подъемы sqlite, помещает результаты в массив. Перезагружает таблицу.
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
if((searchType == SEARCH_AS_YOU_TYPE) && ([searchText length] >= 2)){
NSString *myKeyword = [NSString stringWithFormat:@"%@", searchText];
[self search:myKeyword];
[myTableView reloadData];
}
}
Я ограничиваю результаты до 50. И в моем SQL-запросе используются LIKE и OR, но пока нет.
SELECT WORD_ID, DEFIN, PINYIN, SIMP, TRAD from WORDS where DEFIN LIKE "%to dog %" OR DEFIN LIKE "%dog" OR DEFIN LIKE "%dog%" ORDER BY DEFIN LIMIT 50
Я также пытался переместить [myTableView reloadData] в метод поиска, в надежде, что клавиатура, по крайней мере, не запаздывает. Нет радости И, к сожалению, я знаю, что sqlite в основном проверяет каждую строку, когда использует оператор like. Но 3-4 секунды для 80-и секунд кажутся немного медленными.
Любые мысли, идеи, комментарии или предложения будут с благодарностью!