2011-02-07 5 views
-1

사용자가 텍스트를 입력 할 수있는 UISearchBar가 있습니다. 기본적으로 동적 회사 이름 검색입니다. (ext API에서로드 됨). 사용자가 "MIC"를 입력하면 AMIC, BMIC, CMIC, ... MICROSOFT가 표시됩니다.UISearchbar 결과 필터링

나는 내 질문은

NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

아래의 코드를 사용하고 있습니다; 1.이 방법이 필터링을위한 최선의 방법입니까? ie comp name의 경우 OR name contains로 시작하는 Name using을 사용해야합니다. 현재 접근 방식입니다. 2. 공백에 대한 검색이 작동하지 않습니다. 예 : "COMP NAME"에 대한 결과가 없습니다.

답변을 얻으면서 추가 정보에 대한 의견을 남기겠습니다. 제안 해주세요.

+0

모든 코드는 NSRange를 반환합니다. 어떻게 실제로 검색을 수행하고 있습니까? – Abizern

+0

결과를 반환하는 ext API를 사용하고 있습니다. 그것들을 배열에 저장하고 배열의 복사본을 필터링 된 결과와 함께 만듭니다. – testndtv

+0

그래서 표시된 코드가 외부 API가 결과를 반환하는 방식과 관련이 있습니까? – Abizern

답변

1

코드를 한 줄만 입력하면 검색 구현이 "최상의 접근 방식"인지 여부를 알기가 어렵습니다. 추가 정보를 제공하면 도움이됩니다. 예를 들어 sTemp 변수의 출처 또는 그 변수의 내용을 알지 못합니다.

말했다 : 당신의 결과는 참으로 외부 API에서 오는 경우

  1. , 그것은 당신에게 그 API에 검색 문자열을 보낼 수있는 속도 향상을 제공 할 수 있으며 데이터 소스에 가까운 검색을 할 수 있습니다 - 캐시하고 전체 결과 세트에서 문자열 스캔을 수행하면 데이터 세트 크기가 증가함에 따라 성능이 약간 저하 될 것입니다. 검색을 로컬에서 수행하도록 설정 한 경우 그래, 대소 문자를 구분하지 않는 검색이 가장 좋은 옵션 일 수 있습니다.
  2. "COMP NAME"에 대한 결과가 있습니까? 저는 "COMPANY NAME"이라는 회사가 있다고 가정하고 "COMPANY NAME"에 단축 "COMP NAME"검색을 부탁합니다. 그렇다면 문제는 여기에서 전체 문자열에 대한 비교를 수행하는 것입니다. "COMPANY NAME"에는 대소 문자를 구분하지 않고 비교할 때 "COMP NAME"하위 문자열이 포함되지 않습니다. 대신 공백에 검색 문자열을 분할 한 다음 이름에 모두 쿼리의 하위 문자열이 포함되어 있으면 각 회사를 확인하십시오. 이 예에서 "COMPANY NAME"에는 부분 문자열 "COMP"와 "NAME"이 모두 들어 있으므로 일치합니다.
+0

약어를 사용하고 싶지 않습니다. 그냥 누군가가 "ABC XYZ"를 입력하면 .., ..을 찾을 수 있어야합니다. 현재 회사 이름에 공백이 있으면 그 결과를 찾지 못합니다. 예. "STATE BANK" – testndtv