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.