Добавление переменных во время сборки в Xcode - PullRequest
0 голосов
/ 15 января 2019

У меня есть некоторые динамические значения, которые мне нужно изменить в зависимости от типа сборки, которую я делаю в Xcode.

Я создал 2 схемы DEV и PROD и установил переменные среды в каждой

enter image description here

Затем я использую их в коде следующим образом

var serviceDomain: String {
    let envVar = ProcessInfo.processInfo.environment
    guard let value = envVar["APP_SERVICE_DOMAIN"] else { fatalError("Missing APP_SERVICE_DOMAIN enviroment variable") }
    return value
}

Это правильный способ подойти к этому?

После того, как приложение скомпилировано, должны ли эти значения быть объединены с ним?

У меня есть проблема в том, что после того, как я остановил свой симулятор, если я пытаюсь открыть приложение, созданное таким образом, оно вылетает, и я подозреваю, что переменные среды больше не присутствуют.

Короче говоря, я бы хотел сборку для dev, которая использует один набор переменных, и сборку для выпуска / производства, которая использует другой.

1 Ответ

0 голосов
/ 15 января 2019

Вам вообще не нужны переменные окружения!

Перейти к настройкам сборки и найти условия активной компиляции:

enter image description here

Добавьте DEBUG для Debug и RELEASE для Release, как я сделал здесь.

Тогда объявите ваши переменные. Допустим, вы хотите, чтобы a было 1 в режиме выпуска и 2 в режиме отладки,

#if RELEASE
let a = 1
#elseif DEBUG
let a = 2
#endif

И это все!

Компилятор выберет одно из значений для компиляции в зависимости от конфигурации сборки вашей схемы. Здесь это отладка, поэтому будет использовано 2:

enter image description here

Подробнее об этом #if thingy

...