6

ユーザーがテキスト入力に入力しているときにオートコンプリートを実装する必要があるアプリケーションを作成しています。テキスト フィールドの下に、最も近い/最高ランクの 10 の単語が表示されます。

約 80,000 の単語とそれぞれの「優先度」のかなり大きなリストが与えられました。これは、次のように、数値のサイズに応じてオートコンプリートでどのくらい上位に表示されるかを決定する数値です。

"transport international";19205
"taxi";18462
"location de voitures";18160
"police";18126
"formation";17858

私は iOS 開発の初心者で、これを行う最善の方法は何かと考えていました。80,000 のフレーズを小さなファイルに分割する必要がありますか? 何が速いでしょうか?

iOSの例でオートコンプリートが使用されているのを見たことがありますが、それは非常に少量の提案のためでした.これほど大きなファイルを使用して行われたのは見たことがありません.明らかに、追加されたユーザーのためにできるだけ速くしたいと思います経験。

例、チュートリアル、またはコードの提案に関する提案は大歓迎です。

4

4 に答える 4

7

オートコンプリートを行い、UITextField の直接のサブクラスを好む場合は、MLPAutoCompleteTextFieldに興味があるかもしれません。

MLPAutoCompleteTextField は、テキスト フィールド内のテキストが変更されるたびに、オートコンプリート データソースにオートコンプリート候補の配列を要求するだけで機能します。ユーザーが入力している単語に最も近い単語がオートコンプリート リストの一番上に表示されるように、単語を自動的に並べ替えることもできます (レーベンシュタイン距離アルゴリズムを使用)。オートコンプリートの提案は、単純な文字列、または MLPAutoCompletionObject プロトコルを実装するオブジェクトにすることができます。

ヒント:オートコンプリート用語の大きなデータセットの場合、開始文字に基づいてリストを分割することをお勧めします。(例: ユーザーが文字 F を入力すると、オートコンプリート テキスト フィールドに F で始まる単語のリストのみが表示されます。)

MLPAutoCompleteTextField は、合理的な時間内に数千の提案を効率的に並べ替えることができ、並べ替え中に UI をブロックすることはありません。

現時点では、重み付けされた提案 (デフォルトの並べ替えをオーバーライドする) は使用できませんが、計画されている機能です。

于 2013-05-08T20:03:34.450 に答える
6

このレポHTAutocompleteTextField、完璧なソリューションを使用することをお勧めします。

于 2013-02-19T15:06:50.743 に答える
2

https://github.com/TarasRoshko/TRAutocompleteView

TRAutocompleteItemsSourceプロトコルに準拠するだけです。プロトコルは、非同期サポートを念頭に置いて設計されています。デモアプリとサンプルTRGoogleMapsAutocompleteItemsSourceが大いに役立つはずです。

于 2013-02-27T20:50:18.293 に答える
0

このリンクは私にとってはうまくいきました。コードによっては、 と の違いを見逃さないでUITextFieldくださいUITextView

追加のライブラリはなく、簡単なカスタムUITableViewおよび検索機能だけです。

于 2015-01-30T17:13:07.310 に答える