¿Dónde establecer las variables ambientales en iOS?

En mi desarrollo, deseo acceder a una URL de desarrollo cuando estoy probando, pero cuando la aplicación se ejecuta en mi iPhone, quiero que se ejecute en la URL de producción. ¿Cómo obtengo configurar esto en Xcode?

Casi parece que necesito poder establecer variables ambientales (que en este caso son diferentes URL).

¿Dónde los configuro? Por favor, llévame a la respuesta ya que soy bastante nuevo

Gracias

Hay muchas forms de hacer esto. Mi método preferido es crear un file llamado Constants.h que se parece a esto:

// // Constants.h // #ifndef Constants_h #define Constants_h #pragma mark - Instances #ifdef DEVELOPMENT #define ROOT_URL @"http://127.0.0.1:8000" #endif #ifdef STAGING #define ROOT_URL @"http://staging.example.com" #endif #ifdef PRODUCTION #define ROOT_URL @"http://production.example.com" #endif 

Entonces, simplemente lo incluyo en mi file * -Prefix.pch así:

 #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import "Constants.h" #endif 

En su configuration de compilation, establezca DESARROLLO o STAGING o PRODUCTION = 1.

Ahora puedes acceder a cosas como ROOT_URL en cualquier parte de tu proyecto.

¡Buena suerte!

Prefiero el método #define también. Para aquellos less familiarizados, son directivas previas al procesador y se configuran incluso antes de que el comstackdor obtenga el código.

Environment variables se configuran en el time de ejecución del progtwig y se pueden manipular en el scheme editor de scheme editor de Xcode 4.x +. Puede configurar diferentes esquemas para acceder a diferentes entornos de testing.

Para acceder a una variable de entorno en time de ejecución desde su código, use lo siguiente:

 NSString *url = @"http://standardurl.com"; NSDictionary *env = [[NSProcessInfo processInfo] environment]; NSString *overrideURL = [env valueForKey:@"url"]; if (overrideURL != nil) url = overrideURL; 

También puede configurar las diferentes URL en su file Plist agregando nuevas filas de String si no desea usar un file de constantes.

(No hay mucho que ganar aquí aunque lo admito, pero depende de dónde prefieras configurar tus urls)

En su file myApp-Plist, agregue nuevas filas como esta:

"DevelopmentEndpoint" "String" "http://development.endpoint.com&quot;

"ProductionEndpoint" "String" "http://production.endpoint.com&quot;

En tu código:

 // Get endpoint from main bundle #ifdef DEVELOPMENT NSString *endpoint = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"DevelopmentEndpoint"]; #else NSString *endpoint = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"ProductionEndpoint"]; #endif 

En su configuration de compilation, agregue DESARROLLO en la sección "Macros del preprocesador" para depurar o liberar, etc.