In vielen Situationen benötigen Sie nicht unbedingt eine bedingte Kompilierung; Sie benötigen einfach bedingtes Verhalten, das Sie ein- und ausschalten können. Dafür können Sie eine Umgebungsvariable verwenden. Der große Vorteil dabei ist, dass Sie tatsächlich nicht neu kompilieren müssen.
Sie können die Umgebungsvariable im Scheme-Editor festlegen und ganz einfach ein- oder ausschalten:
Sie können die Umgebungsvariable mit NSProcessInfo abrufen:
let dic = NSProcessInfo.processInfo().environment
if dic["TRIPLE"] != nil {
// ... hier geheime Dinge tun ...
}
Hier ist ein Beispiel aus dem echten Leben. Meine App läuft nur auf dem Gerät, weil sie die Musikbibliothek verwendet, die auf dem Simulator nicht existiert. Wie kann ich also Screenshots auf dem Simulator für Geräte machen, die ich nicht besitze? Ohne diese Screenshots kann ich nicht im AppStore veröffentlichen.
Ich benötige gefälschte Daten und eine andere Verarbeitungsmethode. Ich habe zwei Umgebungsvariablen: Eine davon schaltet während des Betriebs auf meinem Gerät um, um die gefälschten Daten aus den echten Daten zu generieren; die andere schaltet um, um die gefälschten Daten (nicht die fehlende Musikbibliothek) auf dem Simulator zu verwenden. Das Ein- und Ausschalten dieser speziellen Modi ist dank der Umgebungsvariablen-Kontrollkästchen im Scheme-Editor einfach. Und der Bonus ist, dass ich sie nicht versehentlich in meiner App Store-Build verwenden kann, weil beim Archivieren keine Umgebungsvariablen vorhanden sind.