En muchas situaciones, realmente no necesita compilación condicional ; solo necesita un comportamiento condicional que pueda activar y desactivar. Para eso, puede usar una variable de entorno. Esto tiene la gran ventaja de que en realidad no tiene que volver a compilar.
Puede configurar la variable de entorno y activarla o desactivarla fácilmente en el editor de esquemas:
Puede recuperar la variable de entorno con NSProcessInfo:
let dic = NSProcessInfo.processInfo().environment
if dic["TRIPLE"] != nil {
// ... do secret stuff here ...
}
Aquí hay un ejemplo de la vida real. Mi aplicación solo se ejecuta en el dispositivo, porque usa la biblioteca de música, que no existe en el simulador. ¿Cómo, entonces, tomar capturas de pantalla en el simulador para dispositivos que no tengo? Sin esas capturas de pantalla, no puedo enviarme a la AppStore.
Necesito datos falsos y una forma diferente de procesarlos . Tengo dos variables de entorno: una que, cuando está encendida, le dice a la aplicación que genere datos falsos a partir de datos reales mientras se ejecuta en mi dispositivo; el otro que, cuando se enciende, usa los datos falsos (no la biblioteca de música que falta) mientras se ejecuta en el simulador. Activar / desactivar cada uno de esos modos especiales es fácil gracias a las casillas de verificación de las variables de entorno en el editor de esquemas. Y la ventaja es que no puedo usarlos accidentalmente en la compilación de mi tienda de aplicaciones, porque el archivo no tiene variables de entorno.