2017-09-26 1 views
0

내 검색 창에서 대소 문자를 구분하지 않는 글자로 tableView를 필터링 할 수 있습니다. 현재, 나는 그것을 대소 문자를 구분하는 단어로 필터링하고 검색 막대에 사용 된 문자로 tableView를 채우는 방법을 모르겠다.Swift 3.0 검색 창 글자로 필터링 (단어가 아님)

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 

    if newMessageSearchBar.text == nil || newMessageSearchBar.text == "" { 

     isSearching = false 

     view.endEditing(true) 

     messagesTableView.reloadData() 

    } else { 

     isSearching = true 

     nameList = sortedUserNames.filter({$0 == searchBar.text}) 

     messagesTableView.reloadData() 
    } 
} 

내 데이터 소스는 sortedUserNames이며 nameList로 설정합니다. 단어가 완료되거나 필터 함수가 작동하지 않는 경우에만 tableView가 새로 고쳐 지는지 확신 할 수 없습니다. 대신 동일, 소문자가 아닌 경우 확인 만 대신 contains을 사용, 전체 동등한에 true를 반환하는, 비교

답변

2

nameList = sortedUserNames.filter({$0.lowercased().contains(searchBar.text.lowercased())}) 
0

그것은 당신이 검색을 수행하는 방법을 당신의 선택에 따라 민감 테이블에 정확한 검색 문자열이 포함되도록하려면 "=="이 최선의 서비스를 제공하지만 원하는 경우 검색 문자열의 모든 문자/하위 문자열을 포함 할 수 있으므로 "포함"을 선택하십시오.

nameList = sortedUserNames.filter({$0.lowercaseString == searchBar.text.lowercaseString}) 
0

나는 이것을 시도하고 실제로 나를 위해 작동합니다. 나중에 대문자를 찾으려고 할 때 소문자는 특정 문자가 나타날 것입니다.

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 

    if searchWordsBar.text == nil || searchWordsBar.text == "" { 

     isSearching = false 
     view.endEditing(true) 
     originalWordsTableView.reloadData() 

    } else { 
     isSearching = true 
     filteredWords = originalWords.filter { originalWords in return originalWords.lowercased().contains(searchText.lowercased()) 
    } 
     originalWordsTableView.reloadData() 

} 
}