2009-04-25 11 views
9

Quel est le moyen le plus simple d'enregistrer quelques variables dans une application iPhone dans une mémoire à long terme?iPhone - comment enregistrer les paramètres utilisateur à partir de l'application?

J'ai une application qui fonctionne avec différentes bases de données SQLite et je veux après avoir quitté une application pour enregistrer le dernier nom de la base de données active afin d'ouvrir dernière base de données lorsque l'utilisateur entre à nouveau une demande.

Il est pas pratique un peu pour créer à cet effet une base de données spéciale et de stocker ces valeurs, parce que je n'ai que deux variables pour stocker.

Quelle est la manière la plus simple de stocker ces variables?

Merci d'avance.

Répondre

16

NSUserDefaults est le meilleur endroit pour les réglages comme celui-ci.

6

Dans mon fichier d'en-tête, je pourrais ajouter ce qui suit:

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

Dans mon dossier de mise en œuvre, je voudrais ajouter ce qui suit:

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] 
} 

Lorsque votre application démarre, s'il n'y a pas de pré -existing user defaults, +initialize crée un nouveau dictionnaire NSUserDefaults avec ce que vous définissez comme votre base de données par défaut dans kDefaultDatabaseName. Lorsque l'application a terminé le lancement, le membre databaseName prend la valeur définie dans le dictionnaire NSUserDefaults

Cela peut être le kDefaultDatabaseName ou tout ce qu'il a été mis à jour après l'exécution de votre application.

Pendant que vous exécutez votre application, votre utilisateur peut changer la valeur de databaseName à autre chose.

Juste avant la fin de l'application, la valeur databaseName est écrite dans le dictionnaire NSUserDefaults. La prochaine fois que l'application est ouverte, databaseName prendra la nouvelle valeur mise à jour.

Vous ne devez pas attendre que l'application se termine avant d'écrire cette mise à jour dans le dictionnaire. Vous pouvez, par exemple, le faire immédiatement après que l'utilisateur a changé databaseName pour quelque chose de nouveau. Mais c'est à vous de décider.

Questions connexes