好吧,標題幾乎說明了一切。我正在嘗試做的是檢查日期是否已過。因此,舉個例子,讓我們說一個用戶正在使用我的應用程序,然後他們在早上上牀檢查我的應用程序。當我的應用程序打開時,我需要檢查一天是否已經改變。檢查日期是否已過 - 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