tiene tengo tener subir servidores servicios segura que programas pero para nubes nube nada mejores mejor mas lleno liberar guardar gratis fotos espacio eliminar cual compre como aumentar archivos aplicaciones aparece almacenamiento objective-c ios

objective c - tengo - ¿Dónde está el mejor lugar para almacenar constantes en una aplicación de iOS?



programas para guardar archivos (5)

Estoy desarrollando una aplicación ahora que busca recursos de una API JSON.

todos los recursos tienen la misma URL base:

http://api.mysite.com/resources.json http://api.mysite.com/other_resources.json

Quiero almacenar la cadena http://api.mysite.com/ para que esté disponible para todos mis Controladores y Modelos, eliminando algunas duplicaciones al escribir las URL de recursos.

¿Dónde está el mejor lugar para hacer esto? El archivo -prefix.pch ?

Cualquier consejo apreciado


Crearía un singleton o usaría AppDelegate y pondría las constantes allí.


Estoy de acuerdo con la respuesta de Alex Coplan con una importante adición.

Coloque todas sus constantes en un archivo llamado "Constants.h" (o w / e que desee)

EDITAR:

  • Cuando respondí esta pregunta hace tres años, estaba en el carro de #define , revise a continuación para una revisión.

Constantes.h

#define kFilterDate @"date" #define kFilterRadius @"radius" #define kFilterSort @"sort" //Global Strings #define kDividingString @" / " //Strings #define kTour @"Tour" #define kToursKey @"tours"

Pero en lugar de importarlo en cualquier archivo que necesite, impórtelo en su archivo de prefijo para que todos sus encabezados lo importen automáticamente a lo largo de su proyecto.

Project_Prefix.pch

// // Prefix header for all source files of the project // #ifdef __OBJC__ #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import "Constants.h" #endif

REVISIÓN

Aunque toda la información anterior seguirá funcionando, hay algunas cosas que podemos hacer para estar un poco más seguros con respecto a nuestras constantes.

Crea tus constantes en tu archivo Constants.h usando variables const

//Filters FOUNDATION_EXPORT NSString *const kFilterDate; FOUNDATION_EXPORT NSString *const kFilterRadius; FOUNDATION_EXPORT NSString *const kFilterSort; //Global Strings FOUNDATION_EXPORT NSString *const kDividingString; //Strings FOUNDATION_EXPORT NSString *const kTour; FOUNDATION_EXPORT NSString *const kToursKey;

Y en Constants.m

//Filters NSString *const kFilterDate = @"date"; NSString *const kFilterRadius = @"radius"; NSString *const kFilterSort = @"sort"; //Global Strings NSString *const kDividingString = @" / "; //Strings NSString *const kTour = @"Tour"; NSString *const kToursKey = @"tours";

Esto todavía se puede importar a su archivo de prefijo como se indicó anteriormente, pero solo use constantes que sean verdaderamente globales en el archivo para hacer eso. Los que se utilizan con frecuencia en muchos lugares. Volcar todas sus constantes en este archivo hará que su código que usa cualquier constante se acople al archivo de constantes. Por lo tanto, si intenta volver a utilizar el código, el archivo de constantes debe venir con él. Esto no siempre es necesariamente malo, y muchas veces está destinado (lo cual está bien), pero limitar las dependencias siempre es una buena idea.

Algunas cosas sobre la revisión:

  • FOUNDATION_EXPORT vs extern . El primero compila diferentes para C y C ++. Básicamente significa extern , pero en C ++ agregará la bandera "C".
  • consts vs defines . consts son de tipo seguro y respetan el alcance. defines son exactamente lo contrario.

Personalmente, prefiero usar variables de const reales en lugar de definirlas.

En un archivo MyConstants.m tengo:

NSString *const kXYMySiteBaseURL = @"http://api.mysite.com/"; NSString *const kXYSomeOtherURL = @"http://www.google.com/";

donde XY son mis iniciales o algún otro prefijo "único" para evitar colisiones con otras constantes.

Entonces tengo un archivo MyConstants.h como este:

extern NSString *const kXYMySitBaseURL; extern NSString *const kXYSomeOtherURL;

Dependiendo de cuántos archivos necesiten acceder a estas constantes, podría incluirlo en el encabezado precompilado como sugiere ColdFusion en su respuesta.

Así es como Apple define sus constantes en la mayoría de los frameworks Core.


Sí, un encabezado global sería una solución ideal. No llegaría tan lejos como un patrón único, a menos que planee usarlo para otras cosas como administrar su almacén de datos. Un singleton para globales es algo exagerado.


Solo creo un archivo llamado Globals.h con algo como lo siguiente:

#define kBaseURL @"http://api.mysite.com/"

Entonces para usar:

#import "Globals.h" // at the top NSString *url = [NSString stringWithFormat:@"%@resources.json",kBaseURL];