Приложение для iPhone: куда мне положить файл конфигурации? - PullRequest
2 голосов
/ 25 апреля 2009

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

1) Скажите, пожалуйста, куда мне поместить этот файл (config.txt) в xcode. Должен ли я положить его под Ресурсы?

2) Как я получу к нему доступ в iPhone? Могу ли я просто использовать

str = [NSString stringWithContentsOfFile:@"config.txt"] 

или мне нужно использовать более полный путь; если да, то что это?

Ответы [ 4 ]

9 голосов
/ 25 апреля 2009

Вы должны использовать NSUserDefaults для сохранения пользовательских настроек, если приложение может их изменить. Документация здесь .

Настройки хранятся в виде plist-файла, поэтому вы можете хранить NSDictionary экземпляров, NSArray экземпляров и т. Д.

Если вы хотите предварительно заполнить ваш NSUserDefaults некоторыми настройками, вы можете сделать это с помощью следующего кода:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"defaults" ofType:@"plist"];
NSDictionary *defaultsDict = [NSDictionary dictionaryWithContentsOfFile:filePath];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict];

Вам необходимо поместить файл defaults.plist в папку «Ресурсы» с настройками по умолчанию и использовать приведенный выше код. Я запускаю этот код из метода +(void)initialize AppDelegate, но вы можете выбрать другое место для его вызова.

1 голос
/ 18 ноября 2010

И если вы хотите получить NSUserDefaults , вы можете сделать следующее:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting a NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];

// getting a NSInteger
NSInteger myInt = [prefs integerForKey:@"integerKey"];

// getting a Float
float myFloat = [prefs floatForKey:@"floatKey"];
1 голос
/ 25 апреля 2009

Вы можете поместить это в Ресурсы, да. Чтобы получить файл, вы можете просто использовать:

[[NSBundle mainBundle] pathForResource:@"config" ofType:@"txt" inDirectory:@""]]

Могу ли я предложить NSUserDefaults для ваших настроек, однако? Это избавит вас от множества проблем при чтении и написании.

0 голосов
/ 25 апреля 2009

Если nsuserdefaults не отвечает вашим потребностям, вы можете сохранить информацию о конфигурации в файле в каталоге Documents. Если файл не существует при запуске, прочитайте версию, которая у вас есть в разделе Ресурсы.

...