iPhone à NSUserDefaults couchait nulle lorsque l'application est fermée ou en arrière-plan

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

  •  30-09-2019
  •  | 
  •  

Question

Je veux éliminer toutes les variables enregistrées dans tous les domaines de NSUserDefaults chaque fois que l'application est fermée ou en cours d'exécution en arrière-plan pendant un certain laps de temps - disons 5 minutes

.

J'ai essayé d'ajouter une ligne au délégué de l'application de applicationDidFinishLaunching qui ressemble à ceci:

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

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

J'ai aussi ajouté que cette partie à la applicationWillTerminate:

NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

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

Rien de tout cela semble fonctionner et je ne sais pas comment définir une condition de « si 5 minutes ont dépassé de l'application étant en arrière-plan, supprimez les variables NSUserDefaults » - Toute aide

Était-ce utile?

La solution

Je recommande de supprimer l'objet au lieu de le mettre à zéro.

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

Le comportement normal de NSUserDefaults est de retour nul quand il n'y a pas de clé correspondant à la requête, donc je crois est préférable de suivre la même règle et non nul pour conserver une certaine touche.

it helps.

Autres conseils

Peut-être que vous devriez utiliser applicationDidEnterBackground :. Consultez cette doc pomme.

Je procédez comme suit: dans le - (void)applicationWillResignActive:(UIApplication *)application d'appel de délégué de UIApplication je sauverait un horodatage lorsque l'application est entré dans l'arrière-plan. Dans ce cas, vous ne devez pas vérifier si l'application va à l'arrière-plan ou si elle vient de s'interrompu par exemple un SMS, mais le succès de l'utilisateur annule et continue en utilisant votre application.

Lorsque l'application se lance à nouveau la mise en œuvre du code dans une autre méthode de délégué de UIApplication - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions pour déterminer combien de temps vous avez été inactif et essuyer les UserDefaults ou non en fonction de la durée.

Pour plus d'informations d'application devient inactive et en relançant vérifier ce document de la documentation d'Apple http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html# // apple_ref / doc / uid / TP40007072-CH3-SW10

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top