Переменная среды Swift возвращает ноль при создании приложения - PullRequest
0 голосов
/ 04 июля 2018

Описание

У меня проблема с переменными окружения. Когда я создаю свое приложение, и оно работает, все идет хорошо, но когда я нажимаю «стоп» или архивирую его для магазина приложений, переменная среды возвращает nil (или пустую строку, я еще не совсем уверен).

Как воспроизвести:

  1. Сборка приложения
  2. Запустите его на симуляторе (появится «Hello world»)
  3. Остановить приложение
  4. В симуляторе вернитесь в приложение («Hello word» не появится)

Минимальное воспроизведение:

class ViewController: UIViewController {
    @IBOutlet weak var label: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        label.text = ProcessInfo.processInfo.environment["testVariable"]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

Метка Outlet ссылается на простую раскадровку

скриншот раскадровки

А вот конфиг для моих переменных env

Конфигурация переменных

Наконец, вот минимальное воспроизведение проблемы на репозитории github. https://github.com/MasterBroki/test-environment-variable

Спасибо за ваши ответы!

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Натыкаясь на ту же проблему. Использование обычных параметров конфигурации Debug и Release с проверками типа

#if DEBUG
  <logic>
#else
  <logic>
#endif

у меня работает

0 голосов
/ 04 июля 2018

Xcode передает переменные среды из схемы во время выполнения iOS. Когда вы запускаете приложение за пределами XCode, они не передаются. Я также столкнулся с этим ограничением, и вы можете найти похожий вопрос здесь .

Альтернативой этому подходу является использование пар конфигураций (таких как Debug, Release или конфигурация, созданная вами для определенной цели) и «Флаги препроцессора» ИЛИ «Другие флаги Swift». Вы можете найти некоторые рекомендации для этого подхода здесь .

...