Создание и хранение дерева префикса на iPhone перед выполнением выполнения
-
11-10-2019 - |
Вопрос
В настоящее время я делаю слово для 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*));