我在輸入搜索欄時嘗試過,其結果應該是表視圖中的更新,因爲我在輸入時動態過濾數據。如何使用Swift-2過濾大型陣列以獲得高性能
當我在模擬器中測試時,它運行良好,但實際上運行在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_get_main_queue(),塊) dispatch_async }
請爲此建議我適當的解決方案。
任何解決方案?.. –