从Product数组中搜索文本,但数据量巨大,并且卡住了ui视图和键盘。
func searchText(text: String) -> [Product]{
self.filterData = text.isEmpty ? self.productCollection : self.productCollection.filter({(product: Product) -> Bool in
// If dataItem matches the searchText, return true to include it
if product.item_title?.range(of: text, options: .caseInsensitive) != nil {
return true
}
else if String(product.item_id).range(of: text, options: .caseInsensitive) != nil {
return true
}
return product.team_options.contains(where: { (option : Product) -> Bool in
if option.item_title?.range(of: text, options: .caseInsensitive) != nil {
return true
}
return option.team_options.contains(where: { (option : Product) -> Bool in
return option.item_title?.range(of: text, options: .caseInsensitive) != nil
})
})
})
return self.filterData
}
这是搜索栏功能
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
DispatchQueue.global(qos: .background).async {
self.filterData = self.searchText(text: searchText)
}
(self.view as? ScannerView)?.setData(data: self.filterData)
}
从数组中搜索字符串的任何其他方式请帮助。