2010-09-16 13 views

Respuesta

57

De http://rosettacode.org/wiki/Environment_variables#Objective-C:

[[NSProcessInfo processInfo] environment] devuelve un NSDictionary del entorno actual.

Por ejemplo:

[[[NSProcessInfo processInfo] environment] objectForKey:@"MY_SRC_DIR"] 
+8

BUZZZ: Respuesta incorrecta; este método devolverá las variables de entorno en tiempo de ejecución. La pregunta es sobre el acceso a una variable de entorno que existe en (Xcode) tiempo de compilación. – geowar

+18

Quizás la respuesta incorrecta para la pregunta del OP, ¡pero la respuesta correcta para mí! ¡¡Gracias!! –

+0

¿Cómo puedo ver los valores de esas variables de Xcode? – vijayst

-4

La mejor respuesta a esta pregunta es la respuesta aceptada sobre esta cuestión.

Constants in Objective-C

Usted obtendrá el mayor número de kilómetros, y no se necesita ningún métodos especiales para obtener el valor que está buscando, siempre y cuando se importa el archivo en cualquier .h/archivo .m es va a consumir dicho valor.

+0

+1 para el enlace que publicó –

6

La única manera que he encontrado para obtener una variable de entorno de tiempo de construcción como una cadena es ponerlo en un elemento de diccionario de la siguiente manera:

<key>Product Name</key> 
<string>$PRODUCT_NAME</string> 

y recuperar de esta manera:

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; 
NSString* productName = infoDict[@"Product Name"]; 
NSLog(@"Product Name: %@", productName); 
+0

Esta es una respuesta correcta.Sería ideal encontrar una forma de hacerlo sin el diccionario de información. ¿Pero es eso posible? –

+0

Esto todavía está usando el plist, pero al menos puede cambiarlo en el momento de la compilación. Consulte http://stackoverflow.com/questions/15361202/add-date-to-xcode-xcconfig-file –

+0

Consejo útil. Le permite usar una cadena definida en .xcconfig que es específica de configuración de compilación tanto en tiempo de ejecución como en scripts de compilación/etc. –

11

Aquí hay otra manera de hacerlo:

archivo .xcconfig:

FIRST_PRESIDENT = '@"Washington, George"' 
GCC_PREPROCESSOR_DEFINITIONS = MACRO_FIRST_PRESIDENT=$(FIRST_PRESIDENT) 

objetivo de código C:

#ifdef FIRST_PRESIDENT 
    NSLog(@"FIRST_PRESIDENT is defined"); 
#else 
    NSLog(@"FIRST_PRESIDENT is NOT defined"); 
#endif 
#ifdef MACRO_FIRST_PRESIDENT 
    NSLog(@"MACRO_FIRST_PRESIDENT is %@", MACRO_FIRST_PRESIDENT); 
#else 
    NSLog(@"MACRO_FIRST_PRESIDENT is undefined, sorry!"); 
#endif 

salida de la consola - He despojado a cabo la basura de NSLog:

FIRST_PRESIDENT is NOT defined 
MACRO_FIRST_PRESIDENT is Washington, George 
21

Sólo exponga el var deseado en la lista de variables de entorno de la implementación actual de Xcode Esquema y podrá recuperarlo en tiempo de ejecución de esta manera:

NSString *buildConfiguration = [[NSProcessInfo processInfo] environment][@"BUILD_CONFIGURATION"]; 

También se aplica a swift ba proyectos sed

Adding Xcode Build Setting Var to Environment var

espero que ayude !! :]

Cuestiones relacionadas