2009-04-01 6 views
0

einige Variablen meiner apps speichern ich benutze:applicationWillTerminate funktioniert, solange ich nicht ausschalten das iPhone

- (void) applicationWillTerminate: (UIApplication *) Anwendung {

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setFloat: self.viewController.sLabel.contentOffset.y forKey:@"floatKey"];  
[prefs setObject:self.viewController.newText forKey:@"stringVal"]; 
[prefs synchronize]; 

}

und sie abzurufen, über eine Schaltfläche, muss ich folgendes:

- (IBAction) riprendi: (id) sender {

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
float myFloat = [prefs floatForKey:@"floatKey"]; 

// einige Aktionen hier

}

Alles auf dem Simulator arbeitet. Bei Verwendung auf einem echten iPhone funktioniert das Speichern und Abrufen der Variablen jedoch nur, wenn Sie die Home-Taste drücken, die App beenden und wieder öffnen, aber NICHT, wenn Sie das iPhone aus-/einschalten. In diesem Fall gehen die Variablen einfach verloren, sobald Sie die App wieder öffnen ...

Was vermisse ich? Dies ist eigentlich macht mich verrückt :(

Thank you so viel;) Fabio

+0

Sie sagen, dass A) das Telefon ausschaltet *, während Ihre App läuft * das Problem zu verursachen scheint, oder B) das Telefon ausschaltet, selbst nachdem Sie die App geschlossen haben, verschwinden die Einstellungen. –

Antwort

6

Wenn Sie auf der Oberseite des Telefons den Verriegelungsknopf bedeuten Schlagen mit den Worten „Ein-/Ausschalten“, dann gewann‘ t funktionieren, weil das Sperren des Telefons nicht dazu führt, dass eine Anwendung beendet wird. Ihre Methode applicationWillTerminate: wird nur aufgerufen, wenn Sie Ihre Anwendung auf dem Startbildschirm oder in einer anderen Anwendung beenden. Wenn der Benutzer die Standby-Taste drückt, wird applicationWillResignActive: an Ihren Anwendungsdelegaten gesendet.

Apple's iPhone OS Programming Guide hat einen Abschnitt über die Behandlung von Unterbrechungen.

1

Laut Apples Dokumentation

„NSUserDefaults speichert die Informationen zu vermeiden, den Default-Datenbank des Benutzers zu öffnen jedes Mal, wenn Sie einen Standardwert benötigen.“

Wenn Sie sicherstellen möchten, dass Dinge gespeichert werden, sollten Sie "synchronisieren" auf Ihren Einstellungen aufrufen.

Verwandte Themen