Ios Swift处理日期更改事件
如何在swift中处理日期更改事件 我想在日期更改时创建一组通知Ios Swift处理日期更改事件,ios,xcode,swift,date,Ios,Xcode,Swift,Date,如何在swift中处理日期更改事件 我想在日期更改时创建一组通知 var localNotification: UILocalNotification = UILocalNotification() localNotification.alertAction = "Testing notifications on iOS8" localNotification.alertBody = " Woww it works!!" localNotification.fireDa
var localNotification: UILocalNotification = UILocalNotification()
localNotification.alertAction = "Testing notifications on iOS8"
localNotification.alertBody = " Woww it works!!"
localNotification.fireDate = date
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
您可以执行
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翻译过来的,但你应该知道大概的意思 您可以执行
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翻译过来的,但你应该知道大概的意思 您可以订阅
UIApplicationsSignificantTimeChangeNotification
。这一个应该在天气变化时开火
不幸的是,这一枪在其他场合也会开火。因此,您应该存储一个静态变量,其中包含上次触发此通知的日期,然后检查它是否确实更改了日期
我不知道你要用它做什么,但在大多数情况下,一般意义上的重大时间变化就是你所寻找的。你可以订阅
UIApplicationSignificantTimeChangeNotification
。这一个应该在天气变化时开火
不幸的是,这一枪在其他场合也会开火。因此,您应该存储一个静态变量,其中包含上次触发此通知的日期,然后检查它是否确实更改了日期
我不知道你要用它做什么,但在大多数情况下,一般意义上的重大时间变化就是你所寻找的。尝试为
NSNotification.Name.NSCalendarDayChanged添加观察者。
其缺点是,它仅在应用程序位于前台时触发尝试为
NSNotification.Name.NSCalendarDayChanged添加观察者
它的缺点是,只有当应用程序位于前台时才会触发。TimeIntervalencesNow的参数以秒为单位,因此
1
不会提前1天,而是1秒。是的,我很抱歉,你是对的。因此,在这种情况下,您可以将数字相乘以获得所需的时间长度。@pbush25如果我想设置全年的通知,这不是一种有效的方法。我想处理日期更改事件您想处理日期更改事件是什么意思?你能说得更具体些吗?例如,今天是29,当这个日期更改为30时,我想添加通知列表。timeIntervalSinceNow
的参数以秒为单位,因此1
不会提前1天,而是提前1秒。是的,我很抱歉,你是对的。因此,在这种情况下,您可以将数字相乘以获得所需的时间长度。@pbush25如果我想设置全年的通知,这不是一种有效的方法。我想处理日期更改事件您想处理日期更改事件是什么意思?你能说得更具体些吗?例如,今天是29,当这个日期更改为30时,我想添加通知列表。你不应该查看某些存储状态,你的代码应该只说“发生了一些事情,我现在确保所有时间信息都正确显示”。独立于您认为上次通话的时间,也独立于上次通话的时间(在许多情况下可能不一样)。除此之外,这是一种非常容易获得通知的方式,通常每天午夜一次,有时晚些时候,如果手机几天不使用,就会错过一些通知,当用户更改时钟等时,会有一些额外的事件发生,但这只会触发一些代码,这些代码应该足够聪明,一旦被调用就可以做正确的事情。@ChristianSchnorr如果应用程序在后台,这会起作用吗?如何在swift中使用此选项这是正确的方法吗?func applicationsignificantimechange(application:UIApplication){println(“Time Changed”)}@HamedAlSuleimani我认为您发布的代码段应该可以完成它的工作。@gnasher729您完全正确。这就是为什么我说,大多数时候,一个重大的时间变化是你想要观察的。我刚才说过,这就是一个人如何实现问题中描述的行为。你不应该查看某些存储状态,你的代码应该只说“发生了一些事情,我现在确保所有时间信息都正确显示”。独立于您认为上次通话的时间,也独立于上次通话的时间(在许多情况下可能不一样)。除此之外,这是一种非常容易获得通知的方式,通常每天午夜一次,有时晚些时候,如果手机几天不使用,就会错过一些通知,当用户更改时钟等时,会有一些额外的事件发生,但这只会触发一些代码,这些代码应该足够聪明,一旦被调用就可以做正确的事情。@ChristianSchnorr如果应用程序在后台,这会起作用吗?如何在swift中使用此选项这是正确的方法吗?func applicationsignificantimechange(application:UIApplication){println(“Time Changed”)}@Ham