我是初学者,通过做学习。我在tableview上列出了一系列大学,我有一个搜索栏来过滤列表。它仍然与英文字母完美配合,但不适用于韩文字母。
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"]!))
return schools.sorted(by:{$ 0.name< $ 1.name}) }
奇怪的是,sorted()方法可以处理韩文字符,但似乎过滤方法正在崩溃。 (仅适用于韩文字符,英文字符很好)
因此,如果我输入파고다,它会过滤所有内容,并且没有大学可供选择。
非常感谢!
答案 0 :(得分:1)
我假设您正在使用韩语键盘,当您键入파时,我假设您先按ㅍ然后按ㅏ。 (请原谅我,如果我对你如何在这里打字的具体细节错了;我的韩语非常糟糕,但我怀疑你正在做类似的事情。)
按ㅍ调用过滤器例程(因为它会更改文本字段)。没有字符串包含ㅍ,因此它删除了所有内容。然后按ㅏ然后它再次组成角色파并过滤,但一切都已经消失。
您不想继续重新分配filteredUniversities
。您希望每次都在完整列表中进行过滤。这样,即使你没有得到任何东西,你也会获得파的列表。
如果您复制파고다然后将其粘贴到此字段中(而不是键入它),我打赌它可行,因为过滤例程只会被调用一次。