在输入搜索栏时,我尝试了它的结果应该是表视图中的更新,因为我在输入时动态地过滤数据。
当我在模拟器中进行测试时,它工作得很好,但实际上它在iPhone上运行,而输入它时,它的响应非常慢。
我知道,由于大数组,即100000条记录的数组,因此它可能会给我缓慢的响应。
这是我的实际过滤工具,当用户开始键入时,它将过滤数据。
func searchBar(searchBar: UISearchBar, textDidChange searchText: String)
{
self.filtered = self.data.filter({ (text) -> Bool in
let tmp: NSString = text
let range = tmp.rangeOfString(searchText, options: [NSStringCompareOptions.CaseInsensitiveSearch , NSStringCompareOptions.AnchoredSearch])
return range.location != NSNotFound
})
if(self.filtered.count == 0)
{
self.searchActive = false;
}
else
{
self.searchActive = true;
self.tableView.reloadData()
}
if(searchBar.text == "")
{
searchBar.resignFirstResponder()
}
self.tableView.reloadData()
searchBar.showsCancelButton = true
self.ContainerView.hidden=true
self.tableView.hidden=false
if(searchBar.text != "")
{
self.ContainerView.hidden=true
self.tableView.hidden=false
}
}
我需要如何实现它,使它能够快速过滤并提供快速响应?
我是否应该用“多线程”来实现它&如何实现?
就连我都用以下方法尝试过这个东西..。
dispatch_to_background_queue {} & func dispatch_to_main_queue(块: dispatch_block_t?) { dispatch_async(dispatch_get_main_queue(),块!)}
请给我建议正确的解决办法。
发布于 2016-02-24 07:08:11
此外,我认为这个选项只是一个帮助或提示,不一定需要严格,上面可以慢慢地改进您的特性。
尝试使用更好的NSPredicate来改变我的改进过程。
https://stackoverflow.com/questions/35595304
复制相似问题