Question

Je les deux procédures suivantes définies dans mon AppDelegate. SaveSettings et loadSettings. J'appelle ma procédure loadSettings dans la méthode AppDidFinishLaunching, et je fais appel à la procédure SaveSettings dans mes paramètres voir, une fois que le bouton d'enregistrement est cliqué.

Les deux méthodes semblent appeler au bon moment, le bon nombre de fois (une fois), et en utilisant les données correctes. mes paramètres objet obtient les bonnes données, mais les données ne semble pas être réellement économiser. Quand je lance le code de charge, mes variables résultantes reviennent vides (non nul).

J'ai essayé de mettre le même code de chargement dans une autre vue et il fonctionne très bien, mais pour une raison quelconque, je ne reçois pas les résultats dans mon appDelegate.

- (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)
        settings.autoLogin=@"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"];   
}
Était-ce utile?

La solution

Doh.

Dans SaveSettings, je manque mes [prefs synchronisent];

Autres conseils

pour faire exemple:

//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"]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top