objective-c - puedo - microsoft teams no inicia sesion
¿Cómo#definir un NSString para uso global? (3)
En su archivo de cabecera:
extern NSString *const kAPIEndpointHost;
extern NSString *const kAPIEndpointLatestPath;
extern NSString *const kAPIEndpointMostPopularPath;
En su archivo de implementación:
#ifdef DEBUG
NSString *const kAPIEndpointHost = @"http://example.dev";
#else
NSString *const kAPIEndpointHost = @"http://www.example.com";
#endif
NSString *const kAPIEndpointLatestPath = @"/api/latest_content";
NSString *const kAPIEndpointMostPopularPath = @"/api/most_popular";
Soy nuevo en Objective-C. Básicamente, quiero almacenar un conjunto de URL de punto final como cadenas para su uso en mi aplicación, pero necesito un dominio diferente en función de si la aplicación está en modo DEPURADOR o no. Pensé que podría ser útil usar un archivo de encabezado ( Common.h
por ejemplo) con algunas definiciones simples como:
#ifdef DEBUG
#define kAPIEndpointHost @"http://example.dev"
#else
#define kAPIEndpointHost @"http://www.example.com"
#endif
#define kAPIEndpointLatest [kAPIEndpointHost stringByAppendingString:@"/api/latest_content"]
#define kAPIEndpointMostPopular [kAPIEndpointHost stringByAppendingString:@"/api/most_popular"]
Obviamente, esto no funciona, ya que no se puede basar una constante en el valor de otra constante aparentemente.
¿Cuál es la forma "correcta" de hacer esto? ¿Tendría más sentido simplemente tener una clase adecuada con métodos de clase que devuelvan los valores de punto final correctos?
EDITAR: Para ser claros, las cadenas "Últimas" y "Más populares" que se basan en la cadena del host son las que más problemas tengo. Al compilador no le gusta la porción stringByAppendingString
de #defines.
No me gusta usar #defines para las constantes de cadena. Si desea constantes globales y compilación de tiempo de compilación. Yo usaría lo siguiente:
Archivo de cabecera:
extern NSString *const kAPIEndpointHost;
extern NSString *const kAPIEndpointLatestPath;
extern NSString *const kAPIEndpointMostPopularPath;
Archivo de implementación:
#ifdef DEBUG
#define API_ENDPOINT_HOST @"http://example.dev"
#else
#define API_ENDPOINT_HOST @"http://www.example.com"
#endif
NSString *const kAPIEndpointHost = API_ENDPOINT_HOST;
NSString *const kAPIEndpointLatestPath = (API_ENDPOINT_HOST @"/api/latest_content");
NSString *const kAPIEndpointMostPopularPath = (API_ENDPOINT_HOST @"/api/most_popular");
Si solo está concatenando cadenas, puede usar la concatenación de series de tiempo de compilación:
#ifdef DEBUG
#define kAPIEndpointHost @"http://example.dev"
#else
#define kAPIEndpointHost @"http://www.example.com"
#endif
#define kAPIEndpointLatest (kAPIEndpointHost @"/api/latest_content")
#define kAPIEndpointMostPopular (kAPIEndpointHost @"/api/most_popular")