Создание и хранение дерева префикса на iPhone перед выполнением выполнения

StackOverflow https://stackoverflow.com/questions/4474152

Вопрос

В настоящее время я делаю слово для iOS, которая при загрузке читает в текстовом файле около 30000 слов и загружает их в дерево префикса для быстрого поиска во время игрового процесса. Это работает хорошо, но процесс погрузки и построения деревьев добавляет заметные несколько секунд к временю запуска приложения. На данный момент я тестирую на iPhone 4, но я думаю, что было бы намного медленнее на более ранних моделях 3GS.

Есть ли способ создать это дерево во время компиляции, а не когда приложение открывается? Или, менее идеально, возможно ли предварительно поместить данные с другой программой и добавить этот файл в проект вместо того, чтобы делать это во время выполнения? Как бы я это сделал?

Это было полезно?

Решение

Я столкнулся с той же проблемой с игрой, которую мы разработали, и для нас она выполняла лучше, чтобы использовать SQLite DB со словами вместо дерева в памяти. DB использовал меньше места, чем плист, который представлял дерево, оно не требовало от нас предварительно загружать его в памяти, и производительность (при запросе действительного слова) была примерно одинаковой.

Другие советы

Ответ PGB хорош. Если вы не хотите использовать SQLite, вы можете хранить свои данные в PLIST и иметь [NSDictionary DictionaryWithContentsOffile:] Создать дерево для вас.

Если вы решите собирать данные в вашу программу, они должны быть построены из примитивных типов, таких как числа и символы. Затем используйте структуры и массивы для определения структуры, и используйте постоянную переменную для хранения данных. Вот простой пример, который является просто массивом строк персонажа:

const char *words[] = {"Word1","Word2","Word3"};
const unsigned numWords = (sizeof(words) / sizeof(char*));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top