2016-10-27 1 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