iPhone tramontando NSUserDefaults a zero quando applicazione è chiusa o in background
-
30-09-2019 - |
Domanda
Voglio eliminare tutte le variabili salvate in tutti i campi della NSUserDefaults ogni volta che l'applicazione è chiusa o in esecuzione in background per un certo periodo di tempo - dire 5 minuti
.Ho provato ad aggiungere una riga al app delegato applicationDidFinishLaunching che assomiglia a questo:
if (UIApplicationStateBackground == TRUE) {
NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];
[profiles setObject:nil forKey:@"name1"];
[profiles synchronize];
}
Ho anche aggiunto solo questa porzione al applicationWillTerminate:
NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];
[profiles setObject:nil forKey:@"name1"];
[profiles synchronize];
Niente di tutto questo sembra funzionare e non ho idea di come impostare una condizione di 'se 5 minuti hanno superato dell'applicazione essere in background, eliminare le variabili NSUserDefaults' -? Qualsiasi aiuto
Soluzione
mi sento di raccomandare per rimuovere l'oggetto invece di impostare a zero.
- (void)removeObjectForKey:(NSString *)defaultName;
Il comportamento normale di NSUserDefaults è quello di restituire nil quando non c'è chiave corrispondenti alla query, quindi credo che è meglio seguire la stessa regola e non conservare nulla per un determinato tasto.
La speranza aiuta.
Altri suggerimenti
Forse si dovrebbe usare applicationDidEnterBackground :. Scopri questa pagina mela doc .
vorrei fare quanto segue: nella chiamata delegato - (void)applicationWillResignActive:(UIApplication *)application
di UIApplication mi farebbe risparmiare un timestamp quando l'applicazione è entrato sullo sfondo. In questo caso non si controlla se l'applicazione sta per lo sfondo o se è appena stato interrotto da esempio uno SMS, ma il colpo utente annullano e continua utilizzando la propria applicazione.
Quando si avvia l'applicazione di nuovo implementare il codice in un altro metodo delegato di UIApplication - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
per determinare quanto tempo sei stato inattivo e pulire le UserDefaults o meno a seconda della durata.
Per ulteriori informazioni di applicazione diventare inattivi e rilancio controllare questo documento, della documentazione di Apple http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html# // apple_ref / doc / uid / TP40007072-CH3-SW10