2016-02-20 190 views
2

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

此外,當應用程序被終止或在後臺或任何東西時,我並不需要知道這些信息。我只需要知道應用程序運行時的日期是否已更改,並且用戶實際上正在與其進行交互。

注:我看過其他堆棧溢出帖子有關這個問題,但他們都沒有幫助過我。

+0

「天變了」是什麼意思?你的意思是_date_已經改變了嗎? – matt

+0

@matt是的,抱歉讓我更新問題。 – Harish

回答

4

實施觀察

NSCalendarDayChangedNotification 

發佈時所確定 由系統日曆,語言環境和時區的系統更改日曆日。這個通知沒有提供對象, 。

如果設備在白天發生變化時睡着,此通知 將在喚醒時發佈。如果設備已經睡了多天,只有一個通知會在 喚醒上發佈。

觀察員收到本通知 的時間並不能保證。因此,您不應該依賴在任何精確時間發佈或接收此通知。

該通知通過[NSNotificationCenter defaultCenter]發佈。

實施例:

applicationDidFinishLaunching添加

NSNotificationCenter.defaultCenter().addObserver(self, selector:"calendarDayDidChange:", name:NSCalendarDayChangedNotification, object:nil) 

且實施方法

func calendarDayDidChange(notification : NSNotification) 
{ 
    doSomethingWhenDayHasChanged() 
} 

或使用塊API。

如果包含觀察者的類不是應用程序委託類,則可以在某個時間刪除觀察者。

+0

啊哈,謝謝你的幫助,這對我很有幫助! – Harish

+0

此外,我嘗試這個代碼'讓noteCenter = NSNotificationCenter.defaultCenter() 令觀察者= noteCenter.addObserverForName(NSCalendarDayChangedNotification,對象:無,隊列:NSOperationQueue.currentQueue(),usingBlock:{ 通知中心在 })'。我如何執行查詢? – Harish

+0

這隻適用於如果您的應用程序在日期更改的午夜時間運行。如果設備被鎖定和/或您的應用程序被暫停,這將無法使用。馬特的方法,在被刪除的答案中,更適合OP的問題。將NSDate保存爲暫停事件中的用戶默認值,然後下次啓動或返回前臺時,請閱讀保存的日期,使用NSCalendar查看日期是否已更改,然後您將繼續。 –

相關問題