アプリを初めて起動したとき、およびその後データベースの更新を行うたびに、そのデータベースの更新時刻を保存します (たとえば、NSUserDefaults に)。
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"LastDatabaseRefreshTime"];
次に、アプリがアクティブになるたびに、データベースが最後に更新されてから 4 時間以上経過しているかどうかを確認します。だからあなたの
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSDate *dbRefreshDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastDatabaseRefreshTime"];
dbRefreshDatePlus4hrs = [NSDate dateWithTimeInterval:(4*60*60) sinceDate:dbRefreshDate];
NSDate *nowTime = [NSDate date];
if ([dbRefreshDatePlus4hrs compare:nowTime] == NSOrderedAscending) {
// Its more than 4 hours since the last refresh so
// add code to call for another database refresh here
}
}