String with contains的数组过滤很慢

时间:2017-12-28 10:19:36

标签: ios arrays swift contains

从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)
  }

从数组中搜索字符串的任何其他方式请帮助。

0 个答案:

没有答案