Как вызывать функцию только один раз в неделю или месяц? - PullRequest
2 голосов
/ 29 июня 2011

Я спрашиваю себя, как вызывать функцию только один раз в неделю или месяц? Я думал о NSTimer, но он работает только тогда, когда приложение активно, не так ли?
Поэтому, возможно, мне нужно сохранять текущее время и определять прошедшие дни каждый раз, когда я запускаю приложение.
Или есть более простой метод, например, простой вызов функции? ; -)

Помощь оценена

1 Ответ

4 голосов
/ 29 июня 2011

Да, вам нужно сохранить вашу последнюю синхронизированную дату в базе данных / пользовательских значениях по умолчанию, а затем выбрать из базы данных / пользовательских значений по умолчанию

и необходимо передать и дату, синхронизированную дату и текущую дату следующей функции

-(int)howManyDaysHavePast:(NSDate*)lastDate today:(NSDate*)today {
NSDate *startDate = lastDate;
NSDate *endDate = today;

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:startDate toDate:endDate options:0];
int days = [components day];
return days;
}

и тогда вам нужно проверить, сколько дней прошло

if([self howManyDaysHavePast:lastSyncedDate today:[NSDate date]]>=7)
{
   [self callFunction];
}
...