2017-09-29 8 views
1

Ich bin ein Anfänger und durch Lernen lernen. Ich machte eine Liste von Universitäten in einer Tabellenansicht und ich hatte eine Suchleiste, um die Liste zu filtern. Es funktioniert immer noch perfekt mit englischen Buchstaben, aber nicht mit den koreanischen Buchstaben.Koreanische Wörter/Zeichen filtern?

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

Weiß jemand, wie man das .filter koreanische Buchstaben erkennen lässt? Meine Universitäten sind wie folgt aufgeführt. (Es gibt viele mehr, aber sie alle folgen dem gleichen Format)

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"]!)) 

Rückkehr universities.sorted (nach: {$ 0.name < $ 1.name}) }

Seltsam, die sortiert() Methode kann die koreanischen Zeichen verarbeiten, aber es scheint, als ob die Filtermethode zusammenbricht. (nur für koreanische Schriftzeichen, die englischen sind in Ordnung)

Also wenn ich 파고다 eintippe, filtert es alles aus und es gibt keine Universitäten zur Auswahl.

Vielen Dank!

+0

Versuchen Sie, sowohl den Text als auch den Namen der Universität in Kleinbuchstaben umzuwandeln und vergleichen Sie sie so: 'mod.name.lowercased(). Enthält (text.lowercased())' – the4kman

+0

Ich hatte zuerst die Kleinbuchstaben(), aber dann entfernt es. Ich dachte, dies könnte der Grund sein, warum der Koreaner nicht filterte, da Koreanisch kein oberes oder unteres Gehäuse hat. Ich füge es zurück, aber das ist nicht das Problem. Danke für die Antwort! – Anthroman

+0

Bitte geben Sie den Namen der Universitäten und Ihren Suchtext zu Ihrer Frage an. – the4kman

Antwort

1

Ich nehme an, Sie arbeiten an einer koreanischen Tastatur, und wenn Sie 파 eingeben, gehe ich davon aus, dass Sie zuerst ㅍ drücken und dann ㅏ drücken. (Verzeihen Sie, wenn ich falsch liege, was die Schreibweise betrifft; mein Koreanisch ist schrecklich, aber ich vermute, Sie machen etwas Ähnliches.)

Drücken Sie ㅍ ruft Ihre Filterroutine auf (seit dem ändert das Textfeld). Keiner der Strings enthält ㅍ, so dass alles entfernt wird. Dann drückst du ㅏ und es setzt das Zeichen 파 und filtert erneut, aber alles ist schon weg.

Sie möchten nicht erneut zuweisen filteredUniversities. Sie möchten jedes Mal auf der vollständigen Liste filtern. Auf diese Weise erhalten Sie, auch wenn Sie nichts für ㅍ bekommen, eine Liste für 파.

Wenn Sie 파고다 kopieren und dann in dieses Feld einfügen (anstatt es zu tippen), wette ich, dass es funktioniert, da die Filterroutine nur einmal aufgerufen wird.

+0

Du bist ein Genie. Ich habe es kopiert/eingefügt und Sie haben Recht. Ich verstehe nicht ganz, wie ich das Problem noch beheben kann. Aber ich bin sehr glücklich zu wissen, was das Problem ist. – Anthroman

Verwandte Themen