2009-04-25 19 views
9

¿Cuál es la manera más fácil de guardar un par de variables en una aplicación de iPhone en una memoria a largo plazo?iPhone - cómo guardar la configuración del usuario desde la aplicación?

Tengo una aplicación que funciona con diferentes bases de datos SQLite y quiero que después de salir de una aplicación para guardar apellido base de datos activa con el fin de abrir la última base de datos cuando el usuario entra en una aplicación de nuevo.

Es un poco no conveniente de crear para este fin una base de datos especial y almacenar estos valores en ella, porque sólo tengo un par de variables para almacenar.

¿Cuál es la forma más fácil de almacenar esas variables?

Gracias de antemano.

Respuesta

16

NSUserDefaults es el mejor lugar para los ajustes de este tipo.

6

En mi archivo de cabecera, debo añadir lo siguiente:

@interface myAppDelegate : NSObject <UIApplicationDelegate> { 
    ... 
    NSString *databaseName; 
} 
extern NSString * const kDefaultDatabaseName; 
extern NSString * const kAppDatabaseNameKey; 

En mi archivo de implementación, me gustaría añadir lo siguiente:

NSString * const kDefaultDatabaseName = @"myDefaultDatabaseName"; 
NSString * const kAppDatabaseNameKey = @"kAppDatabaseNameKey"; 

@implementation myAppDelegate 

+ (void) initialize { 
    if ([self class] == [MyAppDelegate class]) { 
    UIApplication* myApp = [UIApplication sharedApplication]; 

    NSString *defaultDatabaseName = kDefaultDatabaseName; 
    NSMutableDictionary *resourceDict = [NSMutableDictionary dictionary]; 
    [resourceDict setObject:defaultDatabaseName forKey:kAppDatabaseNameKey]; 
    } 
} 

- (void) applicationDidFinishLaunching:(UIApplication *)application { 
    ... 
    databaseName = [[NSUserDefaults standardUserDefaults] stringForKey: kAppDatabaseNameKey]; 
} 

... 

- (void) applicationWillTerminate:(UIApplication *)application { 
    ... 
    [[NSUserDefaults standardUserDefaults] setObject:databaseName forKey:kAppDatabaseNameKey] 
} 

Cuando se inicia la aplicación, si no hay pre -existentes predeterminados del usuario, +initialize crea un nuevo diccionario NSUserDefaults con lo que haya configurado para ser su base de datos predeterminada en kDefaultDatabaseName.

Cuando la aplicación termina de iniciarse, el miembro databaseName toma el valor establecido en el diccionario NSUserDefaults. Puede ser el kDefaultDatabaseName o lo que sea que se haya actualizado después de ejecutar su aplicación.

Mientras se ejecuta la aplicación, el usuario puede cambiar el valor de databaseName a otra cosa.

Justo antes de que la aplicación finalice, el valor de databaseName se escribe en el diccionario NSUserDefaults. La próxima vez que se abra la aplicación, databaseName asumirá el nuevo valor actualizado.

Usted no tiene que esperar a que la aplicación terminar antes de escribir esta actualización al diccionario. Podría, por ejemplo, hacer esto inmediatamente después de que el usuario cambie databaseName a algo nuevo. Pero eso depende de ti.

Cuestiones relacionadas