#objective-c #ios5 #configuration-files #iphone-4
#objective-c #ios5 #конфигурационные файлы #iphone-4
Вопрос:
Я знаю, как читать / записывать в локальные файлы на iOS, используя дескрипторы файлов. Я могу динамически создавать их и читать / записывать из них. Что я пытаюсь сделать прямо сейчас, так это включить файл длиной около 200 строк в пакет приложений, который я надеюсь проанализировать и извлечь параметры конфигурации. Я действительно не хочу создавать массив из 200 чисел вручную.
Как бы мне включить текстовый файл в приложение и сделать его доступным из моего приложения?
Спасибо!
Ответ №1:
Вы можете включить файл в пакет, добавив его в свою папку ресурсов в Xcode и убедившись, что он также включен в ваш целевой файл. Для доступа к файлу в пакете (например, текстовому файлу, называемому info.txt ), вы можете получить путь, используя:
[[NSBundle mainBundle] pathForResource:@"info" ofType:@"txt"]
Затем получите к нему доступ, используя обычные NSFileManager
методы.
РЕДАКТИРОВАТЬ: С учетом сказанного, вы не можете ничего записать в этот файл внутри пакета на iOS. Вместо этого вы можете скопировать файл из пакета в папку файловой системы (скажем, в папку поддержки вашего приложения) при первом запуске, а затем получить к нему доступ в другом месте вашего приложения.
Ответ №2:
Почему бы вам не создать словарь с помощью редактора списка свойств и загрузить его как
NSString *configurationPath = [[NSBundle mainBundle] pathForResource: @"configuration" ofType: @"plist"];
NSDictionary *configuration = [NSDictionary dictionaryWithContentsOfFile: configurationPath];
Таким образом, вы можете получить доступ к его настройкам с помощью
[configuration objectForKey: @"someSetting"];
Если вы хотите писать, я рекомендую зарегистрировать этот словарь с помощью NSUserDefaults, чтобы вы могли записывать в копию, например
[[NSUserDefaults standardUserDefaults] setObject: someSetting forKey: @"someSetting"];
Комментарии:
1. NSDictionaries — это нечто совершенно новое для меня. Я надеялся включить файл .CSV со значениями в 200 строк по x5 в каждой, которые я могу легко проанализировать, используя ту же логику, которую я использую для чтения / записи моих обычных файлов журнала. Похоже, что для пути к словарю мне придется проделать еще больше работы, чем создание массива вручную
2. @AlexStone: Преимущество NSDictionaries или PLists в том, что вы получаете синтаксический анализ бесплатно. Для CSV вам нужно самостоятельно написать анализатор (возможно, вам потребуется поддержка экранирующих символов и прочего).
3. @AlexStone: Я поддерживаю то, что говорит Darkdust. Вы точно описываете, для чего Apple изобрела NSDictionary и NSUserDefaults. Бьюсь об заклад, это будет даже быстрее, чем любой CSV-подход, потому что NSDictionary и NSUserDefaults оптимизированы по максимуму. Примечание: если вы не знаете, как обойти NSDictionaries, я действительно рекомендую вам прочитать несколько руководств.