gpt4 book ai didi

ios - 如何使用 Swift-2 过滤大型数组以获得高性能

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:36 24 4
gpt4 key购买 nike

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

当我在模拟器中测试时它运行良好,但实际上在 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(block: dispatch_block_t?) { dispatch_async(dispatch_get_main_queue(), block !)

请为此建议我适当的解决方案。

最佳答案

  1. 以前排序或过滤的约束数组使生活变得非常简单。

  2. 获取的数据可以通过添加日期来限制,这样可以减少要过滤的数据数量

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

尝试使用 NSPredicate,它可以更好地改变改进过程。

关于ios - 如何使用 Swift-2 过滤大型数组以获得高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35595304/

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