Улучшение скорости чтения текстовых файлов в Xcode?

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

NSString *file = [[NSBundle mainBundle] pathForResource:fileName ofType:@"txt"];
NSString *fileContents = [NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:nil];

Он работает достаточно хорошо, но по мере роста моего проекта увеличивается и количество текстовых файлов. Я начинаю думать, что должен быть более эффективный способ поиска в текстовых файлах, включенных в проект.

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

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


person flickMik    schedule 05.05.2012    source источник
comment
Чтобы действительно увеличить скорость, рассмотрите возможность добавления всех строк в основные данные или базу данных sql, чтобы вы могли индексировать их и выполнять действительно быстрый поиск (для сравнения).   -  person lnafziger    schedule 05.05.2012


Ответы (2)


Вы смотрели на метод -[NSBundle pathForResource:ofType:inDirectory:]?

person Ken Thomases    schedule 05.05.2012
comment
Ого, это идеально. Не уверен, как я пропустил это, когда я просмотрел документацию NSBundle. Кажется, недостаточно близко! Бесконечно благодарен. - person flickMik; 05.05.2012

У меня была почти аналогичная ситуация, для большей оптимизации я сохранил весь файл ресурсов внутри словаря с некоторым ключом,

вы можете попробовать следовать

1 -- в нашем приложении у вас может быть какой-то шаблон или где вы можете найти основную группу,

2 - иметь несколько словарей для каждой группы, а внутри группы вы можете хранить имя файла,

3 -- Как предложил Кен, использовать -[NSBundle pathForResource:ofType:inDirectory:]

person Amitg2k12    schedule 05.05.2012