2017-10-03 15 views
0

一般的なプログラミングやスピーディーに新しい。私は入力されたものとtableViewの内容を検索するこのsearchBar関数を持っています。私はそれが特殊文字のために働いていないことに気づいた。例:私はテーブルビューを持っています。ここでHonはテキストの名前です。検索バーにHonを入力すると、HonがtableViewのリストに表示されます。しかし、私がHonの(アポストロフィを使って)入力すると、tableViewはすべての内容をリストし、正しく検索していません。 Honさんだけが現れるはずです。下のコードを修正するにはどうすればよいですか?特殊文字を使用して検索

​​
+0

なぜNSStringに変換していますか? range(of:String)は文字列と 'return range!= nil'を期待します –

+1

btwあなたは条件を1行に単純化することができます' searchActive =!filteredData.isEmpty' –

+0

あなたのfilteredDataは 'filteredData = all.filter {$ 0.range(of:searchText、options:.caseInsensitive)!= nil} 'またはこのカスタム拡張を使用するhttps://stackoverflow.com/a/41753828/2303865 –

答えて

0

これを試してみてください:レオが述べたように、あなただけのreturn文を変更することができ

filteredData = all.filter({ (text) -> Bool in 
    return text.lowercased().contains(searchText.lowercased()) 
}) 

更新:

let text = "Hon's Shop" 
let searchText = "Hon's"//works for "Hon" also 
let found = text.lowercased().contains(searchText.lowercased())//returns true 

は、だから、としてあなたのフィルタを変更することができます:

return range != nil 

しかし私の提案を使用すると、コードを短縮できます!

+0

こんにちはD4ttatraya、コメントありがとうございますが、検索バーにHonの文字を入力するとすべての結果が表示されます。 –

関連する問題