2017-07-07 63 views
0

我想每天午夜更新状态。但计时器是间隔的。我怎样才能设置的时间间隔白天每天午夜运行代码

var timer = Timer() 

timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true) 

// called every time interval from the timer 
func timerAction() { 

} 
+0

为什么要为此使用计时器?因为一旦你关闭你的应用程序,定时器就会失效(被删除)。所以它只会在用户保持应用程序从定时器开始到午夜时才开始工作 – Eric

+0

只需要此应用程序可以在特定时间内发出警报。此应用程序可以从系统重启和隐藏开始。 –

+0

是的,我知道你想这样做,但这在iOS中是不可能的,因为Apple不会让你在系统重启时运行代码 – Eric

回答

0

不需要定时器。观察通知

static let NSCalendarDayChanged: NSNotification.Name 

发布时由系统日历,语言环境和时区确定的系统更改日历日。此通知不提供对象。

如果设备在当天发生变化时睡着,该通知将在唤醒时发布。如果设备已经睡了多天,只有一个通知会在唤醒时发布。

NotificationCenter.default.addObserver(self, selector:#selector(calendarDayDidChange), name:.NSCalendarDayChanged, object:nil) 

... 

func calendarDayDidChange() 
{ 
    // do something at midnight 
}