2011-02-03 38 views
2

我想开发一个餐厅系统,它想要计算剩余时间(比如5个薄饼仍然按照比萨的顺序),如何使用NSDate制作计数器?

我想知道这个计数器的基本代码,比如我怎么能使用NSDate或任何其他类?

请指导的秒

回答

3

获取量,因为在一定的NSDate:

[[NSDate date] timeIntervalSinceDate:startingDate]; 

[NSDate的日期]返回当前的NSDate对象,并且那等于当前日期和时间。

+0

我怎么能秒通过NSDate? – 2011-02-03 08:49:43

+0

@Veer NSDate不能使用秒,它是一个日期。如果通过调用dateObject = [[NSDate date] retain]将开始时间存储在NSDate对象中,然后调用此方法来计算所有应设置的时间* – 2011-02-03 09:36:31

1

我认为你可以实施一个循环计时器,每30秒钟进行一次(不要太快),这将轮询所有未决的请求并更新每个订单的倒计时,并向你发出所有达到倒数的订单的信号。

例如:假设您需要5分钟的订单。然后,你将加入5 * 60秒钟,将当前日期计算订单将准备日期:

NSDate *orderReadyAt = [NSDate dateWithTimeIntervalSinceNow:5*60];

然后你会在此日期订单结束日期属性。例如:


Order *myOrder = [[Order alloc] init]; 
... make your order here ... 
myOrder.readyDate = orderReadyAt; 

启动应用程序时,您将定义一个反复出现的计时器,将触发每30秒就会调用“countdownCheck”功能:

[NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(countdownCheck) userInfo:nil repeats:YES];

在这一点上,你必须在做什么你countdownCheck是遍历您的订单情况,并为他们每个人的计算剩余时间:这种做法是不是时间关键


-(void)countdownCheck { 
for(Order *aOrder in allOrders) { 
    NSTimeInterval secondsRemaining = [aOrder.readyDate timeIntervalSinceNow]; 
    //... do something: update your GUI, show an alert if secondsRemaining<0... 
} 
} 

显然,只需要你必须在30秒的限制内运行countdownCheck内的代码,这当然绰绰有余。只要你的循环足够快,你可以理想地将它设置为1秒。