Как получить доступ к настройкам сборки в 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, он довольно легко конвертируется в быстрый.