如何使用NSDate制作计数器?

时间:2011-02-03 08:34:38

标签: iphone objective-c nsdate

我想为餐馆开发一个系统,想要计算剩余的时间(比如披萨的5分钟),

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

请指导

2 个答案:

答案 0 :(得分:3)

获取某个NSDate后的秒数:

[[NSDate date] timeIntervalSinceDate:startingDate];

[NSDate date]返回当前的NSDate对象,它等于当前的日期和时间。

答案 1 :(得分:1)

我认为你可以实现一个定期计时器,每30秒节奏一次(不要太快),它将轮询所有待处理的请求并更新每个订单的倒计时,并向你发出所有到达倒计时的订单。

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

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

然后,您将此日期存储到您的订单结束日期属性中。 E.g:


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中要做的就是遍历你的Order实例,并为每个实例计算剩余时间:


-(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秒。