2017-09-29 29 views
1

私は初心者とやって学びました。私はテーブルビューで大学のリストを作って、リストをフィルタリングするための検索バーを持っていました。それはまだ英語の手紙と完全に一致していますが、韓国の手紙の手紙ではありません。韓国語の単語/文字をフィルタリングしていますか?

var filteredUniversities = University.generateUniversities() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.searchBarSetup() 
} 

func searchBarSetup() { 
    let searchBar = UISearchBar(frame: CGRect(x: 0, y: 0, width: (UIScreen.main.bounds.width), height: 70)) 
    searchBar.delegate = self 

    self.tableView.tableHeaderView = searchBar 
} 

//MARK: Search Bar Delegate 

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 
    //called when text changes (or clears) 

    if searchText.isEmpty { 
     filteredUniversities = University.generateUniversities() 
     self.tableView.reloadData() 
    }else { 
     filterTableView(text: searchText) 
    } 
} 

func filterTableView(text:String) { 
    filteredUniversities = filteredUniversities.filter({ (mod) -> Bool in 
     return (mod.name.contains(text)) 
    }) 

    self.tableView.reloadData() 
} 

誰もが.filterに韓国語の文字を認識させる方法を知っていますか?私の大学は以下の通りです。 (そこに多くの人がより多くのですが、それらはすべて同じフォーマットに従う)

class func generateUniversities() -> [University]{ 
    var universities: [University] = [] 

    universities.append(University(name: "파고다 어학원", location: "부산", photo: UniversityPhotoDictionary["PAG"]!)) 
    universities.append(University(name: "부산대학교", location: "부산", photo: UniversityPhotoDictionary["PNU"]!)) 
    universities.append(University(name: "동아대학교", location: "부산", photo: UniversityPhotoDictionary["DAU"]!)) 

universities.sortedリターン(によって:{$ 0.name < $ 1.name}) }

不思議なことに、ソートされました()メソッドが韓国語の文字を処理できますが、フィルタメソッドが分解されているようです。 (唯一の韓国語の文字のために、英語のものは大丈夫です)

私は파고다に入力するのであれば、それはすべてをフィルタしてから選択する一切の大学はありません。

ありがとうございます!

+0

テキストと大学の名前の両方を小文字に変換し、それを次のように比較してみてください: 'mod.name.lowercased()。contains(text.lowercased())' – the4kman

+0

最初はlowercased()それを取り除いた。私はそれが韓国人が上部または下部ケーシングを持っていないので、それが韓国人がフィルタリングしていなかった理由かもしれないと思った。私はそれを元に戻すが、それは問題ではない。しかし、お返事ありがとう! – Anthroman

+0

あなたの質問にお答えする大学の名前と検索テキストを追加してください。 – the4kman

答えて

1

私はあなたが韓国語のキーボードで作業していると仮定して、あなたが파入力すると、私はㅏあなたの最初のプレスㅍを想定し、押します。 (ここで入力した内容が間違っている場合は私のことを許してください;私の韓国語は恐ろしいですが、これと似たようなことをしていると思われます。)▽を押すと、テキストフィールドを変更します)。いずれの文字列にもipsが含まれていないので、すべてを削除します。それから、↑を押すと、文字Pが作成され、もう一度フィルタリングされますが、すべてが既に消えています。

あなたはfilteredUniversitiesを再割り当て維持する必要はありません。あなたは完全なリストのたびにフィルターをかけたいと思う。そうすれば、たとえあなたがぴったりのものを得なくても、あなたは「パ」のリストを得るでしょう。

パゴダをコピーして(入力するのではなく)このフィールドに貼り付けると、フィルタリングルーチンが一度しか呼び出されないので機能します。

+0

あなたは天才です。私はそれをコピー/貼り付け、あなたは正しいです。私はまだ問題を解決する方法をかなり理解していません。しかし、私は問題が何かを知って非常に満足しています。 – Anthroman

関連する問題