2014-02-23 83 views
0

我正在尋找一種方法來編寫一個迭代NSDate的for循環。每個循環都應該將NSDate增加10秒。遞增NSDate for循環中使用

我想要2個時間戳。說時間戳A是星期一午夜,時間戳B是星期二午夜。

然後我想要的是一些代碼說A到B在兩個時間點之間以10秒爲間隔遞增,使用當前位置的時間戳和最後一個位置的時間戳,這樣我就可以運行查詢基於間隔。

有人會這麼好,告訴我我該怎麼做?

非常感謝

+2

你的問題還不清楚。 你是說你想每10秒運行一次查詢嗎?還是你說你想創建一個相距10秒的日期數組?如果你有一組日期,你將如何在查詢中使用這些日期? –

+0

對不起!我想在兩個時間段之間循環10秒,所以我可以使用這些值查詢這些中間時間段之間的其他數據。 – MrNeilM

+1

因此,星期二00:00:00和星期二00:00:00之間,我想循環00:00:00,00:00:10,00:00:20,00:00:30到23: 59:50 – MrNeilM

回答

4

for循環需要三個部分,一個初始化,一比較,和增量。它看起來是這樣的:

for (NSDate *date = startDate;     // initialisation 
    [date compare:endDate] == NSOrderedAscending; // compare 
    date = [date dateByAddingTimeInterval:10]) // increment 
{ 
    // do something with date here, eg: 
    NSDate *rangeStart = date; 
    NSDate *rangeEnd = [date dateByAddingTimeInterval:10]; 

    [runQuery begin:rangeStart end:rangeEnd]; 
} 

你可能更重構使用while循環,使dateByAddingTimeInterval不需要重複。

這是相同的結構,一個正常的循環:

for (int i = 0; // initialisation 
    i < 10;  // compare 
    i++)  // increment 
{ 
    // do something with i here 
} 
+0

道格拉斯,那正是我想要的!日期= [日期dateByAddingTimeInterval:10])/ /增量我一直盯着它,完全錯過它!漫長的一天,我想。非常感謝。 – MrNeilM

2

這聽起來像你可能想看看NSTimer's timerWithTimeInterval。接口看起來是這樣的:

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats 

,然後就可以使用啓動萬分之一秒後:

initWithFireDate:interval:target:selector:userInfo:repeats: 

您可以註冊即每秒鐘發送如下所示的電話:

// SomeClass.m 

#import "SomeClass.h" 
@interface() 
@property (nonatomic, strong) NSTimer timer1; 
@property (nonatomic, strong) NSTimer timer2; 
@end 

@implementation SomeClass 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
    NSDate* date = [[NSDate date] dateByAddingTimeInterval:10]; 
    self.timer1 = [NSTimer timerWithTimeInterval:10 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; 
    self.timer2 = [[NSTimer alloc] initWithFireDate:date interval:10 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; 
    } 
    return self; 
} 

- (void)timerFireMethod:(NSTimer *)timer 
{ 
    if (timer == self.timer1) { 
    NSLog(@"timer1 fired"); 
    } 
} 
@end 
+0

JuJoDi謝謝你。正如道格拉斯所說,我想要的就是這個循環。但是,timerWithTimeInterval非常有用的描述。謝謝。 – MrNeilM