2011-12-06 117 views
0

在这里制作的第一篇文章和第一个iPhone应用程序,所以请原谅任何n00b错误。我在启动闹钟时遇到问题。我有一个日期选择器和一个按钮作为代码的关键。这里是.h文件激活iPhone报警并发出声音

@interface Alarm : UIViewController 

@property (retain, nonatomic) NSDate *alarm; 
@property (retain, nonatomic) IBOutlet UIButton *sleepButton; 
@property (retain, nonatomic) NSTimer *timer; 
@property (retain, nonatomic) IBOutlet UIDatePicker *timePicker; 

- (IBAction)startAlarm:(id)sender; 
- (void)checkAlarm; 

@end 

这里是.m文件。

- (IBAction)startAlarm:(id)sender 
{ 
    self.alarm = [self.timePicker date]; 

self.timer = [NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(checkAlarm) userInfo:nil repeats:YES]; 
{ 

- (void)checkAlarm 
{ 
    // alarm is reached 
    if ([NSDate date] == self.alarm) 
    { 
     // rest of code goes here 
    } 
{ 

我也有不知道如何进行声使其重演,所以如果我能得到关于如何做一些指导,这将是巨大的。谢谢!

+0

iOS时钟应用程序中没有内置此功能吗? –

回答

0

的问题是在这里:

if ([NSDate date] == self.alarm) 

日期有毫秒级的分辨率,和你的计时器只有每秒触发一次 - 他们完全一致是相当渺茫的机会。

相反,你应该检查:

if ([[NSDate date] compare: self.alarm] == NSOrderedDescending) 

检查报警日期获得通过。