2009-04-25 10 views
9

Qual è il modo più semplice per salvare un paio di variabili in un'applicazione iPhone in una memoria a lungo termine?iPhone - come salvare le impostazioni dell'utente dall'applicazione?

Possiedo un'applicazione che funziona con diversi database SQLite e desidero dopo essere usciti da un'applicazione per salvare l'ultimo nome del database attivo al fine di aprire l'ultimo database quando l'utente inserisce nuovamente un'applicazione.

È un po 'inutile creare per questo scopo un database speciale e memorizzare quei valori in esso, perché ho solo un paio di variabili da memorizzare.

Qual è il modo più semplice per memorizzare tali variabili?

Grazie in anticipo.

risposta

16

NSUserDefaults è il posto migliore per impostazioni come questa.

6

Nel mio file di intestazione, mi permetto di aggiungere il seguente:

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

Nel mio file di implementazione, vorrei aggiungere quanto segue:

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

Quando i tuoi avvio dell'applicazione, se non ci sono pre - le impostazioni predefinite utente esistenti, +initialize creano un nuovo dizionario NSUserDefaults con qualsiasi valore impostato come database predefinito in kDefaultDatabaseName.

Al termine dell'avvio dell'applicazione, il membro databaseName assume il valore impostato nel dizionario NSUserDefaults. Questo può essere il kDefaultDatabaseName o qualunque sia stato aggiornato dopo aver eseguito l'applicazione.

Mentre si esegue l'applicazione, l'utente può modificare il valore di databaseName in qualcos'altro.

Poco prima che l'applicazione termini, il valore di databaseName viene scritto nel dizionario NSUserDefaults. Alla successiva apertura dell'applicazione, databaseName assumerà il nuovo valore aggiornato.

Non è necessario attendere il termine dell'applicazione prima di scrivere questo aggiornamento nel dizionario. Ad esempio, è possibile farlo immediatamente dopo che l'utente ha modificato databaseName in qualcosa di nuovo. Ma dipende da te.

Problemi correlati