我正在尋找一種方法來編寫一個迭代NSDate的for循環。每個循環都應該將NSDate增加10秒。遞增NSDate for循環中使用
我想要2個時間戳。說時間戳A是星期一午夜,時間戳B是星期二午夜。
然後我想要的是一些代碼說A到B在兩個時間點之間以10秒爲間隔遞增,使用當前位置的時間戳和最後一個位置的時間戳,這樣我就可以運行查詢基於間隔。
有人會這麼好,告訴我我該怎麼做?
非常感謝
我正在尋找一種方法來編寫一個迭代NSDate的for循環。每個循環都應該將NSDate增加10秒。遞增NSDate for循環中使用
我想要2個時間戳。說時間戳A是星期一午夜,時間戳B是星期二午夜。
然後我想要的是一些代碼說A到B在兩個時間點之間以10秒爲間隔遞增,使用當前位置的時間戳和最後一個位置的時間戳,這樣我就可以運行查詢基於間隔。
有人會這麼好,告訴我我該怎麼做?
非常感謝
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
}
道格拉斯,那正是我想要的!日期= [日期dateByAddingTimeInterval:10])/ /增量我一直盯着它,完全錯過它!漫長的一天,我想。非常感謝。 – MrNeilM
這聽起來像你可能想看看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
JuJoDi謝謝你。正如道格拉斯所說,我想要的就是這個循環。但是,timerWithTimeInterval非常有用的描述。謝謝。 – MrNeilM
你的問題還不清楚。 你是說你想每10秒運行一次查詢嗎?還是你說你想創建一個相距10秒的日期數組?如果你有一組日期,你將如何在查詢中使用這些日期? –
對不起!我想在兩個時間段之間循環10秒,所以我可以使用這些值查詢這些中間時間段之間的其他數據。 – MrNeilM
因此,星期二00:00:00和星期二00:00:00之間,我想循環00:00:00,00:00:10,00:00:20,00:00:30到23: 59:50 – MrNeilM