2016-10-27 7 views
0

У меня есть очень большой массив данных, которые я использую для поиска. Однако я хотел бы фильтровать только то, что пользователь вводит в панель поиска. То есть если вы наберете «b», вы получите только предметы, начинающиеся с b. Этот список насчитывает более 200 000 предметов, поэтому теперь даже с большим количеством писем, результаты часто неактуальны. Я попытался найти много, но каждый путеводитель я нашел это изменение того, что у меня есть:Отфильтровать табличное представление с UISearchResultsUpdating

extension MapTableController : UISearchResultsUpdating { 
    func filterContentForSearchText(_ searchText: String) { 
      if(searchText == "") { 
       matchingItems = [] 
      } 

      else { 
       matchingItems = arrayOfFixes.filter { fix in 
        return fix.lowercased().contains(searchText.lowercased()) 
       } 
       tableView.reloadData() 
      } 
    } 

    func updateSearchResults(for searchController: UISearchController) { 
     let searchText = searchController.searchBar.text 
     filterContentForSearchText(searchText!) 
     self.tableView.reloadData() 
    } 
} 

Я понимаю, что с помощью «содержит» будет иметь выше эффект. Но я не могу понять, как отфильтровать его желаемым образом. Например, мне бы хотелось, чтобы, если я войду в «Бен», он покажет результаты, такие как «Бенди», «Бенху», «Бенджи» и т. Д. Не так, чтобы он показывал результаты, такие как «Юбен», «Ибено» и т. Д., Вы получаете изображение.

Спасибо за помощь!

ответ

0

Вы можете использовать «hasPrefix» вместо «содержит» для фильтра:

return fix.lowercased().hasPrefix(searchText.lowercased()) 
+0

Только то, что я искал, спасибо! – nixa