Swift处理日期更改事件

时间:2015-06-29 13:22:22

标签: ios xcode swift date

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

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

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

3 个答案:

答案 0 :(得分:2)

您可以订阅UIApplicationSignificantTimeChangeNotification。这一天应该在白天变化时开火。

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

我不知道你会用它做什么,但在大多数情况下,人们正在寻找一般重大时间变化

答案 1 :(得分:1)

您可以执行localNotification.fireDate = NSDate(timeIntervalSinceNow: 1),它会在当前日期的1天内通知您。这可以根据您的喜好进一步定制,具体取决于您希望时间的具体程度。

编辑:正如评论中指出的那样,timeIntervalSinceNow以秒为单位计算,因此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翻译的,但你应该得到一般的想法。

答案 2 :(得分:0)

尝试为setFilterByAuthorizedAccounts(false)添加观察者

仅当应用程序处于前台时才会触发的缺点