Ios 如何使用Swift-2过滤大型阵列以获得高性能

Ios 如何使用Swift-2过滤大型阵列以获得高性能,ios,arrays,multithreading,swift,Ios,Arrays,Multithreading,Swift,我在搜索栏中键入时尝试过,它的结果应该是表视图中的更新,因为我在键入时动态过滤数据 当我在模拟器中测试时,它工作得很好,但实际上是在iPhone上运行的,输入时,它的响应非常慢 我知道,由于大数组,即100000条记录的数组,因此它可能会给我很慢的响应 这是我实际的过滤功能,当用户开始输入时,它会过滤数据 func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

我在搜索栏中键入时尝试过,它的结果应该是表视图中的更新,因为我在键入时动态过滤数据

当我在模拟器中测试时,它工作得很好,但实际上是在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
                }
        }
我需要如何实现它,以使它能够快速过滤并提供快速响应

我是否应该用“多线程”实现它&如何实现

甚至我也尝试了以下方法

将\u分派到\u后台\u队列{} & func调度到主队列(块:调度块?){ dispatch\u async(dispatch\u get\u main\u queue(),block!) }

请给我建议适当的解决办法

  • 先前排序或过滤的约束数组使生活变得非常简单

  • 获取的数据可以受其添加日期的限制,这可以减少要过滤的数据数量

  • 此外,我相信这个选项只是一个帮助或提示,不一定需要严格,上面可以慢慢改进您的功能


    尝试使用NSPredicate,这会更好地改变我的改进过程。

    这是排序数组,我正试图根据用户的输入进行筛选。是否有不同的实现方法。请尝试使用nspridicate并使用date对其进行筛选(stackOverflow中的源太多),这可能需要设计具有更多参数的类,如果在筛选器中找不到数据,可以逐个使用这些参数,如果您只在字符串中查找筛选器,请尝试字典搜索在GeekForgeksk中查找它是否可以为此使用多线程来提高其筛选性能。根据我的经验,我相信这些线程与您要解决的问题无关,因此我将把它留给您,让您在需要线程时进行探索…有任何解决方案吗?。。