为iPhone应用程序存储树(不会被修改)

时间:2012-02-27 08:34:52

标签: iphone tree persistent-storage

我正在编写一个iPhone应用程序,允许用户输入食物并获得食物所含卡路里的数量。我希望这个应用程序自动完成搜索查询,这样如果有人输入“oran”,弹出选项“orange”。树似乎是实现自动完成的最佳数据结构。有没有办法存储这个树,以便我的应用程序不必通过每次运行时读取XML文件来重建它?

2 个答案:

答案 0 :(得分:0)

嗯不,你每次都需要在启动时读取树。您可以使用NSCoding将对象树写入磁盘。但你需要以任何方式加载。

答案 1 :(得分: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”。