Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift处理日期更改事件_Ios_Xcode_Swift_Date - Fatal编程技术网

Ios 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

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

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

 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