Во многих ситуациях вам не нужна условная компиляция ; вам просто нужно условное поведение, которое вы можете включать и выключать. Для этого вы можете использовать переменную окружения. Это имеет огромное преимущество в том, что вам не нужно перекомпилировать.
Вы можете установить переменную окружения и легко включить или выключить ее в редакторе схем:
Вы можете получить переменную среды с NSProcessInfo:
let dic = NSProcessInfo.processInfo().environment
if dic["TRIPLE"] != nil {
// ... do secret stuff here ...
}
Вот пример из жизни. Мое приложение работает только на устройстве, потому что оно использует музыкальную библиотеку, которой нет в симуляторе. Как же тогда делать снимки экрана на симуляторе для устройств, которыми я не владею? Без этих снимков экрана я не могу отправить в AppStore.
Мне нужны поддельные данные и другой способ их обработки . У меня есть две переменные окружения: одна, которая при включении говорит приложению генерировать поддельные данные из реальных данных во время работы на моем устройстве; другой, который при включении использует фальшивые данные (не отсутствующую музыкальную библиотеку) во время работы на симуляторе. Включить / отключить каждый из этих специальных режимов легко благодаря флажкам переменных среды в редакторе схем. И бонус в том, что я не могу случайно использовать их в моей сборке App Store, потому что архивация не имеет переменных среды.