Хранение дерева (которое не будет изменено) для приложения iPhone - PullRequest
0 голосов
/ 27 февраля 2012

Я пишу приложение для iPhone, которое позволит пользователям вводить продукты и получать количество калорий, которые есть в продуктах.Я хочу, чтобы это приложение автоматически заполняло поисковые запросы, так что если кто-то наберет «Оран», появится опция «оранжевый».Кажется, дерево является лучшей структурой данных для реализации автозаполнения.Есть ли способ сохранить это дерево, чтобы моему приложению не приходилось перестраивать его, читая XML-файл при каждом запуске?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2012

Если вы действительно хотите избежать доступа к диску, вам нужно написать код для распечатки вашего дерева как массива с синтаксисом 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 },
};

, а затем поместить его в a.c файл в вашем проекте.Затем он будет загружен при запуске программы, когда исполняемый файл загружен в память.

Этот метод, объединяющий данные в заголовочный файл или файл c и помещающий их в исполняемый файл, довольно распространен в iOS для быстрой инициализации илегко.

Редактировать: Кроме того, правильное использование дерева для хранения отдельных символов из нескольких возможных строк называется «три».

0 голосов
/ 27 февраля 2012

Ну нет, вам нужно каждый раз читать в дереве при запуске. Вы можете использовать NSCoding для записи дерева объектов на диск. Но Вам нужно будет загрузить любым способом.

...