Мне нужно запустить таймер по времени, выбранному в подборщике даты. Теперь, если выбранное время больше моего текущего времени, тогда NSTimeInterval
возвращает положительное значение, и таймер срабатывает правильно.NSTimer не срабатывает в следующее время времени
Моя проблема в том, что я выбираю время, меньшее текущего времени, тогда NSTimeInterval
возвращает отрицательное значение.
Так что теперь я делаю так: - добавьте секунды, чтобы на следующий день его уволили 24 * 60 * 60.
Значение секунд подходит правильно, потому что, когда я проверяю это, изменяя время до даты, он возвращает следующую дату с выбранным временем.
Я использую эти значения секунд при настройке своего таймера.
Вот мой код:
NSTimeInterval value=[[self.pickerView date] timeIntervalSinceDate:[NSDate date]];
value=value+24*60*60;
NSLog(@"value =%f",value);
NSDate *d1 = [NSDate dateWithTimeIntervalSinceNow:value];
NSLog(@"%@",d1);
NSDateFormatter *format=[[NSDateFormatter alloc]init];
[format setDateFormat:@"dd/MM/yyyy hh:mm:ss a"];
NSString *str=[format stringFromDate:d1];
NSLog(@"str=%@",str);
[format release];
NSTimer *t = [[NSTimer alloc] initWithFireDate: d1
interval: 1
target: app
selector:@selector(fireWakeUpTimerMethod:)
userInfo:dict repeats:NO];
// app.WakeUPTimer=t;
NSRunLoop *runner = [NSRunLoop currentRunLoop];
[runner addTimer:t forMode: NSRunLoopCommonModes];
[t release];
Но таймер не уволят.
Я протестировал его следующим образом: - Предположим, что мое текущее время устройства - 15 июня 11:00, затем я выбираю 10:00 утра в режиме выбора, так как с 10:00 утра до 11:00, временной интервал возвращает отрицательное значение, поэтому в этом случае я делаю значение = значение + (24 * 60 * 60); и установите мой таймер с этим значением. Затем я открываю приложение настроек и меняю дату и время моего устройства на 16 июня 9:58 утра и закрываю приложение настроек и открываю приложение. Но метод не срабатывал в 10:00. Пожалуйста, скажите нам, является ли это правильным способом тестирования этого сценария. Или я ошибаюсь в тестировании вместо кодирования.
Пожалуйста, помогите мне, поскольку я застрял здесь.
Заранее благодарен!
вы можете разместить вашу реализацию fireWakeUpTimerMethod? Правильно ли дата в NSLog? – Pfitz
Опишите, как вы его протестировали. – tia
@tia Я протестировал его так: - Предположим, что мое текущее время устройства - 15 июня 11:00, затем я выбираю 10:00 утра в режиме выбора, так как с 10:00 утра до 11:00, тогда время интервал возвращает отрицательное значение, поэтому в этом случае я делаю значение = значение + (24 * 60 * 60); и установите мой таймер с этим значением. Затем я открываю приложение настроек и меняю дату и время моего устройства на 16 июня 9:58 утра и закрываю приложение настроек и открываю приложение. Но метод не срабатывал в 10:00. Пожалуйста, скажите нам, если это правильный способ тестирования этого сценария. Пожалуйста, помогите. – user1455539