2010-08-14 2 views
0

Все еще работает мой путь через эту программу. Следующая задача в моем списке дел - выбор случайных слов из предварительно сгенерированного списка. У меня отсортирован код рандомизации, но теперь мне нужно знать, как лучше хранить и извлекать слова из моего большого списка (и это довольно большой список - более 220 слов).Схват текста из файлов

Поскольку я проектирую для iPhone, память имеет первостепенное значение. Из-за этого я надеялся избежать загрузки всего файла в память. Я бы предпочел, чтобы файл был выложен таким образом, чтобы я мог перейти прямо к индексированной позиции в файле и захватить только те данные, которые мне нужны. Было бы неплохо, если бы я мог использовать текстовый файл, который у меня уже есть, со всеми его словами, но я не против преобразования, если есть преимущество для другого метода.

У кого-нибудь есть предложения по поводу наилучшего способа сделать это?

-Ash

ответ

0

Не беспокойтесь о пространстве для хранения (хранения требуется гораздо меньше, чем вы думаете). Используйте PLIST (Файл> Новый файл> Ресурс (Mac OS X)> Список свойств) и arrayWithContentsOfFile, чтобы упростить загрузку слов (определите массив как корневой элемент в PLIST, в документации Apple есть дополнительные сведения). Тогда просто:

srandom(time(NULL)); 
NSUInteger index = rand() % [array length]; 
NSString *word = [array objectAtIndex:index]; 
+0

Спасибо! Увы, одно решение только приносит больше проблем, новый - я просто не могу понять, как получить полный и правильный путь к файлу моего нового файла .plist, чтобы я мог загрузить его в первую очередь. Имя файла randomNames.plist, и оно, похоже, хранится в каталоге Resources. Это мой текущий код, любая идея, что с ним не так? NSString * filePath = [[NSString alloc] initWithString: [[NSBundle mainBundle] pathForResource: @ "randomNames" ofType: @ "plist" inDirectory: @ "Resources"]]; randomNames = [[NSArray alloc] initWithContentsOfFile: filePath]; – Ash

+0

Попробуйте удалить 'inDirectory:'. Не нужно. –

1

Ну, 220 слов не совсем большой список :-) Скажем, каждое слово длиной, скажем, 20 символов. Тогда вы говорите о нищете 4.4kB. Поэтому я не стал бы беспокоиться о размере здесь. Как отметил Кевин, [NSArray arrayWithContentsOfFile:...], вероятно, самый простой способ (также взгляните на [NSDictionary dictionaryWithContentsOfFile:...]).

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

Смежные вопросы