检查日期是否已过 - Swift
好吧,标题几乎说明了一切。我正在尝试做的是检查日期是否已过。因此,举个例子,让我们说一个用户正在使用我的应用程序,然后他们在早上上床检查我的应用程序。当我的应用程序打开时,我需要检查一天是否已经改变。检查日期是否已过 - Swift
此外,当应用程序被终止或在后台或任何东西时,我并不需要知道这些信息。我只需要知道应用程序运行时的日期是否已更改,并且用户实际上正在与其进行交互。
注:我看过其他堆栈溢出帖子有关这个问题,但他们都没有帮助过我。
实施观察
NSCalendarDayChangedNotification
发布时所确定 由系统日历,语言环境和时区的系统更改日历日。这个通知没有提供对象, 。
如果设备在白天发生变化时睡着,此通知 将在唤醒时发布。如果设备已经睡了多天,只有一个通知会在 唤醒上发布。
观察员收到本通知 的时间并不能保证。因此,您不应该依赖在任何精确时间发布或接收此通知。
该通知通过
[NSNotificationCenter defaultCenter]
发布。
实施例:
在applicationDidFinishLaunching
添加
NSNotificationCenter.defaultCenter().addObserver(self, selector:"calendarDayDidChange:", name:NSCalendarDayChangedNotification, object:nil)
且实施方法
func calendarDayDidChange(notification : NSNotification)
{
doSomethingWhenDayHasChanged()
}
或使用块API。
如果包含观察者的类不是应用程序委托类,则可以在某个时间删除观察者。
啊哈,谢谢你的帮助,这对我很有帮助! – Harish
此外,我尝试这个代码'让noteCenter = NSNotificationCenter.defaultCenter() 令观察者= noteCenter.addObserverForName(NSCalendarDayChangedNotification,对象:无,队列:NSOperationQueue.currentQueue(),usingBlock:{ 通知中心在 })'。我如何执行查询? – Harish
这只适用于如果您的应用程序在日期更改的午夜时间运行。如果设备被锁定和/或您的应用程序被暂停,这将无法使用。马特的方法,在被删除的答案中,更适合OP的问题。将NSDate保存为暂停事件中的用户默认值,然后下次启动或返回前台时,请阅读保存的日期,使用NSCalendar查看日期是否已更改,然后您将继续。 –
“天变了”是什么意思?你的意思是_date_已经改变了吗? – matt
@matt是的,抱歉让我更新问题。 – Harish