2017-05-28 6 views
2

私は小さなアプリケーションにオートコンプリート機能を実装しようとしています。私は、ユーザーに都市の長いリストからNSComboBoxに都市を書き留める可能性を与えたいと思います。これは、ユーザーが都市名の配列内で都市の正確な記述を使用している限り、正常に動作します。しかし、彼らが何らかの理由で別の綴りを使うと、それは失敗し、都市は見つからない。NSComboBoxの代替書き込み方法

例えば、ユーザーが「ケルン」を探している場合は問題ではありませんが、「ケルン」を探している場合は見つけられません。

これは私がそれぞれの都市に対して別のスペルの配列を持っているためです。

"city.name"だけでなく "city.alternativeNames"の配列内でも見えるように、NSComboBox(または他のタイプのTextField)が好きです。示された値は、ユーザが何を書いているかを表すべきである。

NSComboBoxのポップアップ部分のリストにそれぞれの代替名のエントリを作成したくない場合は、リストをさらに長くして混乱させるでしょう。(cologneだけでは85種類あります綴り)。

あなたの提案をお寄せいただきありがとうございます。私はNSComboBoxを完全に新しくしました。

答えて

1

興味深い問題です。おそらく、データをより簡単に構成するために、別の方法を選択する必要があると思います。

検索方法(文字列に一致)を検討してください。このケースのデータを構造化するには、各都市の推奨スペルを考慮する必要があります(スクロールしたリストの方が望ましい)。

都市の平坦な配列(各代替配列をチェックしたり、適切に並べ替えたりすることなく、ユーザーのスペルに基づいて簡単に検索できるようにする方法)はありますが、それぞれにはオプションの"正しい"ものへのポインタ。コンボボックスにオプションを表示するときは、オプションスペルスペルのない配列と、現在入力されている代替スペルの部分的/完全なパーサーの配列を表示しますか?

したがって、Cityは、nameプロパティとオプションのpreferredプロパティを持ちます。あなたのケースでは、ケルンが好まれる場合、ケルンのインスタンスはケルンを優先として設定します。 Kölnは、ユーザーが入力した場合(部分的にでも)リストに表示され、アルファソートされた正しい位置に自動的に表示されます(都市がソートされていると仮定して)。

これは意味があるのですか、言い換えるといいですか?今朝はコーヒーが足りません。 :-)

関連する問題