2012-06-14 2 views
0

Мне нужно запустить таймер по времени, выбранному в подборщике даты. Теперь, если выбранное время больше моего текущего времени, тогда 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. Пожалуйста, скажите нам, является ли это правильным способом тестирования этого сценария. Или я ошибаюсь в тестировании вместо кодирования.

Пожалуйста, помогите мне, поскольку я застрял здесь.

Заранее благодарен!

+0

вы можете разместить вашу реализацию fireWakeUpTimerMethod? Правильно ли дата в NSLog? – Pfitz

+0

Опишите, как вы его протестировали. – tia

+0

@tia Я протестировал его так: - Предположим, что мое текущее время устройства - 15 июня 11:00, затем я выбираю 10:00 утра в режиме выбора, так как с 10:00 утра до 11:00, тогда время интервал возвращает отрицательное значение, поэтому в этом случае я делаю значение = значение + (24 * 60 * 60); и установите мой таймер с этим значением. Затем я открываю приложение настроек и меняю дату и время моего устройства на 16 июня 9:58 утра и закрываю приложение настроек и открываю приложение. Но метод не срабатывал в 10:00. Пожалуйста, скажите нам, если это правильный способ тестирования этого сценария. Пожалуйста, помогите. – user1455539

ответ

0

Я предполагаю, что вы получаете значение правильно:

value=value+(24*60*60); 

Также проверьте цель из NSTimer и его селектор

+0

. Да значение правильное, но таймер не запускается. – user1455539

+0

измените строку кода меня на ваш, как у пропущенную математику –

+0

Я добавил скобки в значение, чтобы вычислить правильное значение, так как u пропущенное значение –

Смежные вопросы