tutorial objective lenguaje introduccion español anaya iphone xcode environment-variables

iphone - objective - Cómo hacer referencia a una variable de entorno dentro del código Obj-C



xcode manual pdf (5)

Defino una variable de ruta en el árbol fuente de Xcode llamado "MY_SRC_DIR". Me gustaría obtener el valor de esta variable de entorno y colocarla en un NSString en el código obj-c. Por ejemplo,

-(NSString*) getSourceDir { return @"${MY_SRC_DIR}"; // not the right solution and this is the question }


Aquí hay otra manera de hacerlo:

archivo .xcconfig:

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

código objetivo 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 consola: eliminé la basura de NSLog:

FIRST_PRESIDENT is NOT defined MACRO_FIRST_PRESIDENT is Washington, George



La única forma que he encontrado para obtener una variable de entorno de compilación como una cadena es ponerla en un elemento de diccionario como este:

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

y luego recuperarlo así:

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


La mejor respuesta a esta pregunta es la respuesta aceptada sobre esta pregunta.

Constantes en Objective-C

Obtendrá la mayor cantidad de millas recorridas y no necesitará ningún método especial para obtener el valor que está buscando, siempre y cuando importe el archivo a cualquier archivo .h / .m que vaya a consumir dicho valor.


Simplemente exponga la var deseada en la lista de variables de entorno del esquema de implementación de Xcode actual y podrá recuperarla en tiempo de ejecución de esta manera:

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

También se aplica a proyectos basados ​​en rápidos.

¡¡Espero eso ayude!! :]