gpt4 book ai didi

iphone - Sqlite + 80K 行 + LIKE = 键盘延迟

转载 作者:行者123 更新时间:2023-12-03 20:20:02 27 4
gpt4 key购买 nike

我遇到了这个问题,一直推迟解决,但现在是时候了。

我有一个基本的词典程序。它有一个 UISearchBar 和一个 UITableView。它的工作方式应该是这样,除了在设备上运行时会导致键盘延迟。 (模拟器当然可以)我有两种类型的搜索。键入时和返回时。我发现两者返回结果所需的时间大致相同,但“As-you-type”会导致键盘滞后。

我有 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 运算符时基本上会检查每一行。但是 80 行 3-4 秒似乎有点慢。

任何想法、想法、评论或建议将不胜感激!

最佳答案

在我看来,您正在同一线程中搜索并准备好键盘。这样,您将搜索任意数量的字符,并且输入速度将受到搜索速度的限制。

正确的解决方案是将其分成两个线程,一个用于读取并显示键盘,第二个用于搜索并显示搜索结果。这样,如果您输入的速度比搜索速度快,则只有搜索会滞后,而打字不会。例如,Firefox 地址栏就是这样工作的。

由于两个线程以及两者之间的通信/协调,您的代码会更加复杂,但我认为这是唯一好的解决方案。

关于iphone - Sqlite + 80K 行 + LIKE = 键盘延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/819638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com