【发布时间】:2012-06-14 07:15:40
【问题描述】:
我需要根据在日期选择器中选择的时间来触发计时器。
现在,如果选择的时间大于我当前的时间,那么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,所以时间间隔返回负值所以在这种情况下我做 value=value+(24*60*60);并用这个值设置我的计时器。然后我打开设置应用程序并将我的设备日期和时间更改为 6 月 16 日上午 9:58 并关闭设置应用程序并打开我的应用程序。但是该方法在上午 10:00 没有触发。请告诉我们这是否是测试此场景的正确方法。或者我在测试而不是编码时犯了一些错误。
请帮助我,因为我被困在这里。
提前致谢!
【问题讨论】:
-
你能发布你对 fireWakeUpTimerMethod: 的实现吗? NSLog 中的日期是否正确?
-
请描述你是如何测试它的。
-
@tia 我这样测试它:-假设我的设备当前时间是 6 月 15 日上午 11:00,然后我在选择器视图中选择上午 10:00 时间,因为上午 10:00 小于上午 11:00 然后时间间隔返回负值,所以在这种情况下我做 value=value+(24*60*60);并用这个值设置我的计时器。然后我打开设置应用程序并将我的设备日期和时间更改为 6 月 16 日上午 9:58 并关闭设置应用程序并打开我的应用程序。但是该方法在上午 10:00 没有触发。请告诉我们这是否是测试此场景的正确方法。请帮助。
-
@Pfitz 我正在用这种方法播放歌曲。但问题是该方法没有被调用。
-
@tia 请看一下,如果错误在测试中,请告诉我。我是 iphone 编程的新手。
标签: iphone objective-c ios nstimer