2009-04-23 12 views
28

Tengo los dos procedimientos siguientes definidos en mi AppDelegate. saveSettings y loadSettings. Estoy llamando a mi procedimiento loadSettings en el método AppDidFinishLaunching, y estoy llamando al procedimiento saveSettings en la vista de configuración, una vez que se hace clic en el botón Guardar.iPhone SDK - cargar/guardar configuración

Ambos métodos parecen ser llamados en el momento adecuado, el número correcto de veces (una vez) y utilizando los datos correctos. mi objeto de configuración obtiene los datos correctos, pero los datos no parecen estar realmente salvando. Cuando ejecuto el código de carga, mis variables resultantes vuelven vacías (no nulas).

Intenté poner el mismo código de carga en una vista diferente y funciona bien, pero por alguna razón, no estoy obteniendo resultados en mi appDelegate.

Cualquier ayuda sería muy apreciada.

- (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"]; 
} 

Respuesta

29

Doh.

En saveSettings, me faltaba mi [prefs synchronize];

+0

Gracias por la insignia autodidacta. – Dutchie432

+0

¡Gracias realmente ayudado! – Khattab

+1

"sincronizar" en lugar de "syncronize" – Manni

1

para que sea la muestra:

//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"]