Swift 1.2 variable externa opcional?

Como Swift no puede acceder a variables de compilation, he creado una variable externa c objetiva que apunta a la variable de compilation.

CompileVaribleConvertor.h

extern NSString * const NetworkApiBasicAuthUsername; 

CompileVaribleConvertor.m

 // AUTH_USERNAME might not be defined depending on the environment we are pointing to #if defined(AUTH_USERNAME) NSString * const NetworkApiBasicAuthUsername = @AUTH_USERNAME; #else NSString * const NetworkApiBasicAuthUsername = nil; #endif 

NetworkManager.swift

 if CSNetworkApiAuthUsername != nil { // Basic auth is requinetworking set them } 

Este código solía funcionar en Swift 1.0 , pero Swift 1.2 da un error de compilation. El operador binary '! =' No se puede aplicar a operandos de tipo 'String' y 'nil'

¿Cómo hago que la variable externa sea opcional? Intenté definir la variable externa como __nullable sin suerte

Acabo de hacer algunas testings rápidas y estoy bastante seguro de que es un error. No hay forma de forzar que las variables globales (o constantes) sean opcionales. Incluso si se inicializan con un nil . Eso no puede ser correcto.

Las macros no están conectadas con el error. Como una solución, puede usar una function en lugar de una constante:

 NSString* NetworkApiBasicAuthUsername() { #if defined(AUTH_USERNAME) return @AUTH_USERNAME; #else return nil; #endif }