NSTimer在下一个日期时间不会启动

时间:2012-06-14 07:15:40

标签: iphone objective-c ios nstimer

我需要根据日期选择器中选择的时间来启动计时器。 现在,如果所选时间大于我当前时间,则NSTimeInterval返回正值并且计时器正确启动。

我的问题是当我选择小于当前时间的时间时,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];

但计时器没有被解雇。

我测试了这样: - 假设我的设备当前时间是6月15日上午11:00然后我在选择器视图中选择上午10:00时间,因为上午10:00小于上午11:00然后时间interval返回负值所以在这种情况下我做value = value +(24 * 60 * 60);然后用这个值设置我的计时器。然后我打开设置应用程序并将我的设备日期和时间更改为6月16日上午9:58并关闭设置应用程序并打开我的应用程序。但该方法在上午10:00没有启动。请告诉我们这是否是测试这种情况的正确方法。或者我在测试中犯了一些错误而不是编码。

请帮助我,因为我被困在这里。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我假设你正确

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

同时检查 NSTimer的目标及其选择器