2011-02-07 16 views
-1

ユーザーがテキストを入力できるUISearchBarがあります。基本的には動的な会社名の検索です。 (ext APIからロードされます)。ユーザーが「MIC」と入力した場合は、AMIC、BMIC、CMIC、... MICROSOFTが表示されます。UISearchbarの結果のフィルタリング

私は私の質問がある

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

以下のコードを使用しています。 1.これはフィルタリングに最適なアプローチですか?すなわち、現在のアプローチであるOR nameが含む名前で始まる名前を使用する必要があります。 2.空白で検索が機能していません。例えば"COMP NAME"の結果は返されません

私は答えとして追加情報のコメントを追加します。 お勧めします。

+0

すべてのコードはNSRangeを返します。どのように実際に検索を行っていますか? – Abizern

+0

私は結果を返すext APIを使用しています。私はそれらを配列に格納し、フィルターされた結果を含む配列のコピーも作成します。 – testndtv

+0

あなたが示したコードは、外部APIが結果を返す方法と何が関係していますか? – Abizern

答えて

1

コードを1行だけ進めるだけで、検索の実装が「最良のアプローチ」であるかどうかを判断するのは困難です。追加情報を入力すると役立ちます。たとえば、変数sTempがどこから来ているのか、何が入っているのかわからない。言っ

  1. をあなたの結果が実際に外部APIから来ている場合、それはあなたがそのAPIに検索文字列を送信するための高速化を提供し、それがデータソースに近い検索を行う可能性があります - データセットのサイズが増えるにつれて、結果セット全体をキャッシュして文字列スキャンを実行すると、パフォーマンスが低下することがあります。しかし、ローカルで検索を行うように設定されている場合は、大文字と小文字を区別しない検索がおそらく最良のオプションです。
  2. "COMP NAME"の結果は期待していますか?私は、あなたが "COMPANY NAME"と呼ばれる会社を持っていると大まかに仮定し、あなたの省略名 "COMP NAME"検索を "COMPANY NAME"に当てることを望みます。それでは、ここで問題となるのは、文字列全体ではなく、文字列全体を比較していることです。大文字と小文字を区別しない比較でも、 "COMPANY NAME"には "COMP NAME"という部分文字列は含まれません。検索文字列を空白に分割し、名前にすべてという文字列が含まれているかどうかを確認します。この例では、「COMPANY NAME」には部分文字列「COMP」と「NAME」の両方が含まれているため、一致します。
+0

私は省略したくありません。私はちょうど誰かが "ABC XYZ"とタイプすればそれを見つけることができるはずです...。現在、会社名にスペースがあれば、それはその結果を見つけません。 "STATE BANK"の場合 – testndtv

関連する問題