Как получить доступ к настройкам сборки в Xcode 6?
Кажется, что существует множество вариантов доступа к переменным параметров сборки (т.е. для определения базового URL-адреса веб-службы для разных сред Debug
и Release
).
Я создал переменную User-Defined в Project → Building Settings, по одной для каждой среды. Позвольте называть его WEB_SERVICE_BASE_URL
.
Как мне получить доступ к нему в коде? Я использую XCode 6 и Swift.
Я пробовал это, но он не работает.
let api_key = ${WEB_SERVICE_BASE_URL}
Я тоже пробовал это, и он также не работает
let api_key = NSUserDefaults.standardUserDefaults().stringForKey("WEB_SERVICE_BASE_URL")
Любые предложения? Это, похоже, часто требуется решение, это так легко в Rails, но не так в iOS развития.
Ответы
Ответ 1
Здесь, как настроить:
- Добавьте параметр User-Defined к вашей целевой
Build Settings
(что вы сделали с WEB_SERVICE_BASE_URL
)
- Добавьте новую строку в целевой файл
Info.plist
с ключом: WEB_SERVICE_BASE_URL
, введите: String
, значение: ${WEB_SERVICE_BASE_URL}
Вот как получить значение:
let api_key = Bundle.main.object(forInfoDictionaryKey: "WEB_SERVICE_BASE_URL") as? String
Примечание. Эти ключи/значения могут быть извлечены из пакета, поэтому не забудьте хранить там конфиденциальные данные.
Ответ 2
Самый простой способ - вручную изменить конфигурацию каждый раз вы переключаете среды. Это означает изменение флага компилятора или вручную изменяя значения в вашем проекте. Этот подход является ошибкой склонный, утомительный и далекий от идеала. Лучшим решением является создание настраиваемая конфигурация для каждой среды. Это предполагает создание файл конфигурации, который централизует переменные среды и настраивает Схемы Xcode.
Следуйте этому учебнику, хотя он использует объективный c, он довольно легко конвертируется в быстрый.