![](/img/trans.png)
[英]How to search for peripheral bluetooth devices, on iOS using objective-C?
[英]How to minimise the search time in Objective-C
我正在以JSON
数据实现搜索,该数据包含HTML
格式的数据。
问题在于数据非常大。
而且我必须以颜色显示匹配的搜索,如图像所示:
例如,我搜索了How
:
我的搜索流程如下:
步骤1:-检查数据是否存在
步骤2:-从搜索内容中剥离HTML标签
步骤3:-使用NSRange rangeOfString选项在内容中执行搜索
步骤4:-如果找到匹配项。 使用componentSeparatedByString打破句子中的内容(因为我必须显示在其中找到搜索内容的句子)
第5步:-通过函数中的句子,这使我返回
属性字符串
步骤6:-在数组中添加结果并重新加载表
我在TextField
Delegate方法shouldChangeCharactersInRange
执行搜索结果
问题是我的桌子延迟了1到2秒。
如果输入快速,那么假设我搜索Animal
然后搜索ani
anim
和最后一个animal
。
我该如何加强搜寻。
我的建议如下:
制备
第1步和第2步。不要为每个搜索重复它们,在开始搜索之前或仅在第一次搜索过程中重复一次。
附加步骤:将文本拆分为句子。 您将有一个NSArray
句子作为输入。
搜索
使用搜索文本来构建NSPredicate
(例如, contains[cd]
)。 使用该谓词过滤输入数组。 那应该很快。
重新加载表格以显示结果。 在这里不必理会属性字符串。
突出
显示单元格时,使用当前搜索文本突出显示(生成属性字符串)。 您将只突出显示实际显示的内容,因此应该很快。
可能的改进
防弹跳-搜索文字更改后,请勿立即开始搜索。 启动一个计时器,它将在0.1-0.5秒内进行搜索。 如果很快有新的搜索文本更新,请取消以前的计时器并开始新的计时器。 这会将多个更新合并为一个更新。
使用先前的搜索结果-如果先前的搜索文本是新搜索文本的子字符串,则您只能搜索先前的结果,即搜索的数据较少。
如果搜索仍然太慢(如果您确实有大量文本),请在其他调度队列中执行搜索,并显示活动指示器,直到结果完成为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.