2017-09-26 7 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ある、と私は名前リストに設定します。私は、単語が完了したとき、またはフィルタ関数が機能しないときにのみ、tableViewがリフレッシュされるかどうかはわかりません。代わりに等しい、小文字のは、それが非ケース作るだけの代わりにcontainsを使用し、完全な均等にtrueを返すされ、比較の

答えて

2

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

それはあなたが検索を実行する方法をあなたの選択に依存敏感テーブルに正確な検索文字列を含めるには "=="が最適ですが、名前に検索文字列の文字列または部分文字列が含まれている場合は、 "contains"を選択します。

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() 

} 
} 
関連する問題