2017-09-29 1 views
1

저는 초보자이며 일을 통해 학습합니다. 나는 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"]!)) 

반환 universities.sorted (가 더 많은,하지만 그들은 모두 같은 형식을 따릅니다) (기준 : {$ 0.name < $ 1.name}) } 이상하게

, 정렬() 메서드가 한국어 문자를 처리 할 수 ​​있지만 필터 메서드가 중단되는 것처럼 보입니다. (한국어의 경우 영어는 괜찮습니다.)

파고다를 입력하면 모든 것을 걸러 내고 선택할 대학이 없습니다.

고마워요!

+0

텍스트와 대학의 이름을 소문자로 변환하여 다음과 같이 비교해보십시오.'mod.name.lowercased(). contains (text.lowercased()) ' – the4kman

+0

처음에 lowercased()를 사용했지만 그것을 제거했다. 나는 한국인이 필터링하지 않는 이유라고 생각했다. 한국인은 대문자 또는 소문자가 없기 때문이다. 다시 추가 하겠지만 문제는 아닙니다. 그래도 응답 주셔서 감사합니다! – Anthroman

+0

질문하고자하는 대학의 이름과 검색 텍스트를 추가하십시오. – the4kman

답변

1

당신이 한국어 키보드에서 작업하고 있다고 가정하고, 파 (Pow)를 입력 할 때, 먼저 ㅍ을 누른 다음 ㅏ를 누릅니다. (여기에 입력하는 방법에 대한 세부 사항이 틀린 경우 용서하십시오. 내 한국어는 끔찍합니다. 그러나 이와 비슷한 작업을하는 것으로 의심됩니다.) ㅍ을 누르면 필터 루틴이 호출됩니다 텍스트 필드 변경). 문자열에는 ips가 없으므로 모든 것을 제거합니다. 그런 다음 ㅏ를 누르면 문자 파와 필터가 다시 구성되지만 모든 것이 이미 사라졌습니다.

재 할당을 계속하고 싶지 않다면 filteredUniversities. 전체 목록에서 매번 필터링하려고합니다. 그렇게하면 ㅍ에 대해 아무 것도 얻지 못하더라도 파에 대한 목록을 얻을 수 있습니다.

파고다를 복사 한 다음 입력란에 붙여 넣는다면 필터링 루틴은 한 번만 호출되기 때문에 효과가있을 것입니다.

+0

당신은 천재입니다. 복사/붙여 넣기가 정확합니다. 아직 문제를 해결하는 방법을 잘 모른다. 하지만 문제가 무엇인지 알게되어 매우 기쁩니다. – Anthroman

관련 문제