2011-06-29 41 views
2

我在問自己如何每週或每月只調用一次函數? 我想過NSTimer,但只有在應用程序處於活動狀態時才起作用,不是嗎?
因此,也許我必須保存當前時間,並確定每次啓動應用程序時的過去日子。
還是有一個更簡單的方法,就像一個簡單的函數調用? ;-)如何每週或每月只調用一次函數?

幫助表示讚賞

+0

您可能必須在那裏混合使用。在最糟糕的情況下,該應用可能會一直保持數月。 –

+0

我認爲你需要爲你的問題添加一些更多的上下文,比如運行函數將實現什麼功能,以及對於應用程序而言,函數*對於每週或每月運行一次會有多重要。不過,我現在可以說,'NSTimer'不是要走的路。 –

+0

@ praveen-s如果此功能在指定的時間間隔運行至關重要,那麼依賴最終用戶保持應用程序在後臺運行而不是*難*退出,這當然不是實現這一目標的最佳方式。 –

回答

3

是的,你需要存儲您上次同步日期數據庫/用戶默認值,然後從需要數據庫/用戶默認

獲取並需要通過這兩個日期,同步日期和當前日期下面的函數

-(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]; 
} 
+0

看起來不錯,我會看看吧! – madmax