2016-09-03 2 views
-1

기본적으로 거의 모든 검색이 필터링을 처리하는 방법과 정확히 일치하는 것을 찾고 있습니다.부분 일치 검색으로 배열 필터링?

내가 본 검색 필터링을위한 모든 가이드는 지금까지 기본적으로 같은 것을 제공

let lower = searchBar.text!.lowercaseString 

filteredInterestArray = interestsArray.filter({$0.title.rangeOfString(lower) != nil}) 

을 제공합니다

[ "고양이", "쥐", "박쥐", "아틀라스"]

"at"를 입력하면 모든 사람이 나타나며 실제로는 Altas 만 나타나야합니다. 또한, "stla"라고 입력하면, 아틀라스는 분명히 매우 직관적이지 않습니다.

적절한 필터링은 어떻게 수행됩니까?

답변

1

이 문제를 해결하려면 rangeOfString 메서드 대신 hasPrefix(_:) 메서드를 사용할 수 있습니다.

사용 : 문자열이 서로 시작하면

let lower = searchBar.text!.lowercaseString 
filteredInterestArray = interestsArray.filter({$0.title.hasPrefix(lower)}) 
1

NSString 결정하기 위해 hasPrefix:을 제공합니다.

OP는 interestsArray의 문자열이 시작하려면 소문자인지 여부를 나타내지 만 그렇지 않은 경우 검사 전에 force them to lower을 사용해야합니다.