2009-04-25 7 views
9

Was ist der einfachste Weg, um ein paar Variablen in einer iPhone-Anwendung in einem Langzeitspeicher zu speichern?iPhone - wie man Benutzereinstellungen von der Anwendung speichert?

Ich habe eine Anwendung, die mit verschiedenen SQLite-Datenbanken funktioniert und ich möchte nach dem Beenden einer Anwendung den letzten aktiven Datenbanknamen speichern, um die letzte Datenbank zu öffnen, wenn der Benutzer eine Anwendung erneut eingibt.

Es ist ein bisschen nicht bequem, zu diesem Zweck eine spezielle Datenbank zu erstellen und diese Werte darin zu speichern, weil ich nur ein paar Variablen zu speichern habe.

Was ist der einfachste Weg, um diese Variablen zu speichern?

Vielen Dank im Voraus.

Antwort

16

NSUserDefaults ist der beste Ort für solche Einstellungen.

6

In meiner Header-Datei, könnte ich folgendes hinzufügen:

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

In meiner Implementierung-Datei, würde ich folgendes hinzufügen:

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

Wenn die Anwendung gestartet wird, wenn es keine pre -existing user defaults, +initialize erstellt ein neues NSUserDefaults Wörterbuch mit allem, was Sie als Ihre Standarddatenbank in kDefaultDatabaseName festgelegt werden.

Nach dem Start der Anwendung übernimmt das Element databaseName den Wert, der im NSUserDefaults Wörterbuch festgelegt ist. Dies kann die kDefaultDatabaseName oder was auch immer es nach dem Ausführen Ihrer Anwendung aktualisiert wurde sein.

Während Sie Ihre Anwendung ausführen, kann Ihr Benutzer den Wert databaseName auf etwas anderes ändern.

Kurz bevor die Anwendung beendet wird, wird der Wert databaseName in das Verzeichnis NSUserDefaults geschrieben. Beim nächsten Öffnen der Anwendung übernimmt databaseName den neuen, aktualisierten Wert.

Sie müssen nicht warten, bis die Anwendung beendet wird, bevor Sie dieses Update in das Wörterbuch schreiben. Sie könnten dies zum Beispiel sofort machen, nachdem der Benutzer databaseName zu etwas Neuem ändert. Aber das liegt an dir.

Verwandte Themen