NSUserDefaults wird nicht gespeichert [ios]


Answers

Wenn du sagst "Stoppe das Programm", was meinst du? Laufen Sie im Debugger und beenden Sie die App und führen Sie sie erneut aus? NSUserDefaults Ihre Änderungen nicht sofort bei. Rufen Sie entweder [defaults synchronize] nach dem Schreiben wichtiger Daten auf oder fügen Sie mindestens einen solchen Aufruf der applicationDidEnterBackground Methode Ihres applicationDidEnterBackground . Und dann stellen Sie sicher, dass Sie Ihre App in den Hintergrund stellen, bevor Sie sie löschen, um sicherzustellen, dass die Daten zuerst geschrieben werden.

Question

Ich habe ein Problem in meiner Sprite Kit-App, wo meine NSUserDefaults Variable nicht funktioniert. In createSceneContents (von dem ich weiß, dass es aufgerufen wird)

if (![defaults objectForKey:@"obj"]) {
    difficultyLabel.text = @"Difficulty: Easy";
    [defaults setObject:@"Easy" forKey:@"obj"];
} else {
    difficultyLabel.text = [NSString stringWithFormat:@"Difficulty: %@", [defaults objectForKey:@"diff"]];
}

und dann, wenn du auf SKLabelNode , um den Schwierigkeitsgrad zu ändern und dieser Code wird aufgerufen

if ([label.text isEqualToString:@"Difficulty: Easy"]) {
            label.text = @"Difficulty: Hard";
            [defaults setObject:@"Hard" forKey:@"obj"];
            NSLog(@"%@",[defaults objectForKey:@"obj"]);

        } else {
            label.text = @"Difficulty: Easy";
            [defaults setObject:@"Easy" forKey:@"obj"];
            NSLog(@"%@",[defaults objectForKey:@"obj"]);

aber wenn ich das Programm stoppe und es erneut abspiele, sagt es immer nur Schwierigkeit: Einfach. Irgendwelche Vorschläge?




Ich habe einen anderen Grund gefunden, warum NSUserDefaults nicht speichert, folgender Code kann Wert in NSUserDefaults nicht speichern:

NSUserDefaults *def= [[NSUserDefaults standardUserDefaults] init];
...
NSUserDefaults *def= [[NSUserDefaults standardUserDefaults] initWithSuiteName:@"123"];

Sie können NSUserDefaults in Ihrem Projekt suchen, um diesen init-Fehler zweimal zu NSUserDefaults .