Swift处理日期更改事件



如何在swift中处理日期更改事件?

我想在日期更改时创建一组通知。

 var localNotification: UILocalNotification = UILocalNotification()
    localNotification.alertAction = "Testing notifications on iOS8"
    localNotification.alertBody = " Woww it works!!"
    localNotification.fireDate = date
    UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

您可以订阅UIApplicationSignificantTimeChangeNotification。这个应该在天气变化的时候开火。

不幸的是,这一次也在其他场合发生火灾。因此,您应该存储一个静态变量,其中包含上次触发此通知的日期,然后检查它是否真的更改了日期

我不知道你会用它做什么,但在大多数情况下,通常显著的时间变化就是你想要的。

您可以执行localNotification.fireDate = NSDate(timeIntervalSinceNow: 1),它将在当前日期后1天向您发出通知。这可以根据你的喜好进一步定制,具体取决于你想要的时间。

编辑:正如评论中所指出的,timeIntervalSinceNow是以秒为单位计算的,因此1将是1秒,而不是一天。

编辑2:试着回答被问到的问题。如果您想在每天午夜创建通知。。。

首先,创建一个NSCalendar对象

var calendar = NSCalendar()
var calendarComponents = NSDateComponents()
calendarComponents.setDay(29)
calendarComponents.setMonth(6)
calendarComponents.setYear(2015)
calendarComponents.setHour(12)
calendarComponents.setSeconds(0)
calendarcomponents.setMinutes(0)
calendar.setTimeZone(NSTimeZone.defaultTimeZone)
var dateToFire = calendar.dateFromComponents(calendarComponents)

现在我们可以每天安排通知。

localNotification.fireDate = dateToFire
localNotification.setTimeZone(NSTimeZone.defaultTimeZone)
localNotification.setRepeatInterval(kcfCalendarUnitDay)

语法可能不完美,我是从Obj-C翻译过来的,但你应该了解大致情况。

尝试为NSNotification.Name.NSCalendarDayChanged 添加观测器

它只有在应用程序处于前台时才会触发的缺点

最新更新