iPhone Einstellung NSUserDefaults auf Null, wenn App geschlossen oder im Hintergrund ist

StackOverflow https://stackoverflow.com/questions/3642856

  •  30-09-2019
  •  | 
  •  

Frage

Ich möchte alle Variablen eliminieren, in alle Bereiche der NSUserDefaults gespeichert, wenn die App geschlossen ist oder für eine gewisse Zeit im Hintergrund laufen - etwa 5 Minuten

.

Ich habe versucht, eine Linie zum AppDelegate von applicationDidFinishLaunching dass sieht wie folgt hinzuzufügen:

if (UIApplicationStateBackground == TRUE) {
    NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];
}

ich auch nur diesen Teil zu dem applicationWillTerminate hinzugefügt:

NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];

Nichts davon scheint zu funktionieren und ich habe keine Ahnung, wie man einen Zustand zu setzen ‚wenn 5 Minuten haben übertreffen die Anwendung im Hintergrund ist, löschen Sie die NSUserDefaults Variablen‘ - Jede Hilfe

War es hilfreich?

Lösung

Ich würde empfehlen, um das Objekt zu entfernen, anstatt sie auf Null zu setzen.

- (void)removeObjectForKey:(NSString *)defaultName;

Das normale Verhalten von NSUserDefaults ist null zurück, wenn kein Schlüssel ist, um die Abfrage übereinstimmt, so glaube ich, besser ist der gleiche Regel zu folgen und nicht speichert null für einen bestimmten Schlüssel.

Hope es hilft.

Andere Tipps

Vielleicht sollten Sie applicationDidEnterBackground verwenden :. Check out diese Apfel doc Seite.

würde ich folgendes tun: in den Delegaten Anruf - (void)applicationWillResignActive:(UIApplication *)application von UIApplication Ich würde einen Zeitstempel speichern, wenn die Anwendung den Hintergrund getreten. In diesem Fall müssen Sie nicht überprüfen, ob die Anwendung auf den Hintergrund geht oder wenn es wurde nur durch beispielsweise unterbrochen eine SMS, aber der Benutzer Hit abzubrechen und die Anwendung weiter verwendet wird.

Wenn die Anwendung gestartet erneut implementieren Code in einem anderen Delegatmethode von UIApplication - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions, um zu bestimmen, wie lange Sie inaktiv waren und die UserDefaults wischen oder nicht abhängig von der Dauer.

Weitere Informationen Anwendungs ??inaktiv wird und dieses Dokument von Apples Dokumentation der Neubelebung überprüfen http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html# // apple_ref / doc / uid / TP40007072-CH3-SW10

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top