0

私は、ユーザーが食べ物を入力して、食べ物のカロリー数を取得できるようにするiPhoneアプリを書いています。このアプリで検索クエリをオートコンプリートして、誰かが「oran」と入力するとオプション「orange」がポップアップ表示されるようにします。ツリーは、オートコンプリートを実装するための最良のデータ構造のようです。このツリーを保存して、アプリが実行されるたびにXMLファイルを読み取って再構築する必要がないようにする方法はありますか?

4

2 に答える 2

0

いいえ、起動時に毎回ツリーを読み取る必要があります。NSCodingオブジェクトツリーをディスクに書き込むために使用できます。ただし、何らかの方法でロードする必要があります。

于 2012-02-27T08:52:01.367 に答える
0

本当にディスク アクセスを避けたい場合は、C 構文でツリーを配列として出力するコードを書く必要があります。

struct node {
    const char *name;
    struct node *left_child;
    struct node *right_child;
};

struct node tree[] = 
{
    { "parent", tree + 1, tree + 2 },
    { "left child", NULL, NULL},
    { "right child", NULL, tree + 3 },
    { "right grandchild", NULL, NULL },
};

それをプロジェクトの .c ファイルに入れます。次に、実行可能ファイルがメモリにロードされるときに、プログラムの開始時にロードされます。

データをヘッダーまたは C ファイルに変更して実行可能ファイルに焼き付けるこの手法は、iOS では初期化を高速かつ簡単にするために非常に一般的です。

編集:また、適切に言えば、ツリーを使用して複数の異なる文字列の個々の文字を保持することは、「トライ」として知られています。

于 2012-02-27T11:40:22.493 に答える