effectuer une action si le changement de date

J'ai besoin d'effectuer une action si changement de date. Moyens au moment du lancement de l'application vérifier la date d'aujourd'hui, et si la date d'aujourd'hui est le changement de la dernière heure de 24 heures, alors il va effectuer une action. Est-ce possible car nous n'avons pas besoin d'exécuter le thread d'arrière-plan. Je veux juste append une sorte de condition dans la méthode déléguée.

J'aime: si l'application est lancée, sauvegardez d'abord la date du jour et sauvegardez cette date. Après s'être identifié de nouveau, il comparera cette date avec la date actuelle et si la date de changement est de 24 heures, il effectuera une opération. comment je fais ça? xc

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    Vous pouvez utiliser NSUserDefaults pour save la date.

    Le code suivant vérifie explicitement si la différence entre le dernier et le dernier lancement de l'application est supérieure ou égale à 24 heures. Il enregistre ensuite la date actuelle dans le champ userDefaults.

     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. if ([[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoginTime"] != nil) { NSDate *lastDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoginTime"]; NSDate *currentDate = [NSDate date]; NSTimeInterval distanceBetweenDates = [currentDate timeIntervalSinceDate:lastDate]; double secondsInAnHour = 3600; NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour; if (hoursBetweenDates >= 24) { //Perform operation here. } } [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"LastLoginTime"];//Store current date return YES; } 

    Ajouter ci-dessous la ligne de code dans la méthode didFinishLaunchingWithOptions

     //for new date change [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(timeChange) name:UIApplicationSignificantTimeChangeNotification object:nil]; 

    Implémenter la méthode dans le file YourApplicationDelegate.m

     -(void)timeChange { //Do necessary work here } 

    EDIT : Mélanger @ZeMoon's réponse @ZeMoon's cela fonctionnerait parfaitement, donc les changements dans la méthode timeChange

     -(void)timeChange { if ([[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoginTime"] != nil) { NSDate *lastDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoginTime"]; NSDate *currentDate = [NSDate date]; NSTimeInterval distanceBetweenDates = [currentDate timeIntervalSinceDate:lastDate]; double secondsInAnHour = 3600; NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour; if (hoursBetweenDates >= 24) { //Perform operation here. } } [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"LastLoginTime"];//Store current date }