2009-04-23 15 views
28

Ho le seguenti due procedure definite nel mio AppDelegate. saveSettings e loadSettings. Sto chiamando la mia procedura loadSettings nel metodo AppDidFinishLaunching e sto chiamando la procedura saveSettings nella mia vista delle impostazioni, una volta che si fa clic sul pulsante di salvataggio.iPhone SDK - carica/salva le impostazioni

Entrambi i metodi sembrano essere chiamati al momento giusto, il numero giusto di volte (una volta) e utilizzando i dati corretti. il mio oggetto settings ottiene i dati corretti, ma i dati non sembrano effettivamente essere salvati. Quando eseguo il codice di caricamento, le variabili risultanti tornano vuote (non zero).

Ho provato a inserire lo stesso codice di caricamento in una vista diversa e funziona correttamente, ma per qualche motivo, non ottengo risultati nella mia appDelegate.

Qualsiasi aiuto sarebbe molto apprezzato.

- (void)applicationDidFinishLaunching:(UIApplication *)application {  
     [window addSubview:navigationController.view]; 
     [window makeKeyAndVisible]; 
     [self loadSettings]; 
     [self setDefaults]; 
} 

-(void)loadSettings{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    settings.masterLocation = [prefs objectForKey:@"masterLocation"]; 
    settings.masterPort = [prefs objectForKey:@"masterPort"]; 
    settings.userName = [prefs objectForKey:@"userName"]; 
    settings.passWord = [prefs objectForKey:@"passWord"]; 
    settings.autoLogin=[prefs objectForKey:@"autoLogin"]; 

    if (settings.autoLogin == nil) 
     [email protected]"N"; 


} 

-(void)saveSettings:(SharedData *)d{ 
    settings=d; 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:settings.masterLocation forKey:@"masterLocation"]; 
    [prefs setObject:settings.masterPort forKey:@"masterPort"]; 
    [prefs setObject:settings.userName forKey:@"userName"]; 
    [prefs setObject:settings.passWord forKey:@"passWord"]; 
    [prefs setObject:settings.autoLogin forKey:@"autoLogin"]; 
} 

risposta

29

Doh.

In saveSettings, mancavo il mio [prefs synchronize];

+0

Grazie per il badge Self-Learner. – Dutchie432

+0

Grazie davvero aiutato! – Khattab

+1

"synchronize" invece di "syncronize" – Manni

1

mettendo a segno il campione:

//Writing 
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"anInt"]; 
[[NSUserDefaults standardUserDefaults] setDouble:1.2 forKey:@"aDouble"]; 
[[NSUserDefaults standardUserDefaults] setString:@"aString" forKey:@"aString"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

//Reading: 

int i = [[NSUserDefaults standardUserDefaults] integerForKey:@"anInt"]