Где хранить глобальные константы в приложении для iOS? - PullRequest
109 голосов
/ 19 августа 2011

Большинство моделей в моем приложении для iOS запрашивают веб-сервер. Я хотел бы иметь файл конфигурации, хранящий базовый URL-адрес сервера. Это будет выглядеть примерно так:

// production
// static NSString* const baseUrl = "http://website.com/"

// testing
static NSString* const baseUrl = "http://192.168.0.123/"

Комментируя одну или другую строку, я могу мгновенно изменить сервер, на который указывают мои модели. У меня вопрос: как лучше хранить глобальные константы в iOS? В программировании на Android у нас есть встроенный файл ресурсов strings . В любой Activity (эквивалент UIViewController ) мы можем получить эти строковые константы с помощью:

String string = this.getString(R.string.someConstant);

Мне было интересно, есть ли в iOS SDK аналогичное место для хранения констант. Если нет, то как лучше всего это делать в Objective-C?

Ответы [ 11 ]

0 голосов
/ 19 августа 2011

Подход, который я использовал ранее, - это создать файл Settings.plist и загрузить его в NSUserDefaults при запуске, используя registerDefaults:.Затем вы можете получить доступ к его содержимому с помощью следующего:

// Assuming you've defined some constant kMySettingKey.
[[NSUserDefaults standardUserDefaults] objectForKey:kMySettingKey];

Хотя я не занимался разработкой для Android, это звучит так, как будто это аналогично файлу ресурса строк, который вы описали.Единственным недостатком является то, что вы не можете использовать препроцессор для переключения между настройками (например, в режиме DEBUG).Я полагаю, вы можете загрузить другой файл.

NSUserDefaults документация.

...