Ios 如何使用Swift-2过滤大型阵列以获得高性能
我在搜索栏中键入时尝试过,它的结果应该是表视图中的更新,因为我在键入时动态过滤数据 当我在模拟器中测试时,它工作得很好,但实际上是在iPhone上运行的,输入时,它的响应非常慢 我知道,由于大数组,即100000条记录的数组,因此它可能会给我很慢的响应 这是我实际的过滤功能,当用户开始输入时,它会过滤数据Ios 如何使用Swift-2过滤大型阵列以获得高性能,ios,arrays,multithreading,swift,Ios,Arrays,Multithreading,Swift,我在搜索栏中键入时尝试过,它的结果应该是表视图中的更新,因为我在键入时动态过滤数据 当我在模拟器中测试时,它工作得很好,但实际上是在iPhone上运行的,输入时,它的响应非常慢 我知道,由于大数组,即100000条记录的数组,因此它可能会给我很慢的响应 这是我实际的过滤功能,当用户开始输入时,它会过滤数据 func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
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
}
}
我需要如何实现它,以使它能够快速过滤并提供快速响应
我是否应该用“多线程”实现它&如何实现
甚至我也尝试了以下方法
将\u分派到\u后台\u队列{}
&
func调度到主队列(块:调度块?){
dispatch\u async(dispatch\u get\u main\u queue(),block!)
}
请给我建议适当的解决办法
尝试使用NSPredicate,这会更好地改变我的改进过程。这是排序数组,我正试图根据用户的输入进行筛选。是否有不同的实现方法。请尝试使用nspridicate并使用date对其进行筛选(stackOverflow中的源太多),这可能需要设计具有更多参数的类,如果在筛选器中找不到数据,可以逐个使用这些参数,如果您只在字符串中查找筛选器,请尝试字典搜索在GeekForgeksk中查找它是否可以为此使用多线程来提高其筛选性能。根据我的经验,我相信这些线程与您要解决的问题无关,因此我将把它留给您,让您在需要线程时进行探索…有任何解决方案吗?。。