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 上非常常见,可以使初始化快速而简单。

编辑:另外,正确地说,您使用树来保存多个不同可能字符串的单个字符被称为“trie”。

于 2012-02-27T11:40:22.493 回答