Ios 检测将触发的下一个UILocalNotification
是否有办法找到下一个将触发的本地通知的Ios 检测将触发的下一个UILocalNotification,ios,cocoa-touch,nsarray,uilocalnotification,Ios,Cocoa Touch,Nsarray,Uilocalnotification,是否有办法找到下一个将触发的本地通知的NSDate 例如,我设置了三个本地通知: 通知#1:昨天下午3:00起火,每天重复一次 通知#2:今天下午5:00点火,每天重复一次 通知#3:明天下午6:00点火,每天重复一次 鉴于目前是下午4点,下一个将发出的本地通知是通知2 如何检索此本地通知并获取其日期 我知道我可以在一个数组中检索这些本地通知,但如何根据今天的日期获取下一个将触发的通知?您任务的主要目标是确定给定日期后的“下一个触发日期” 每次通知的日期。 UILocalNotification
NSDate
例如,我设置了三个本地通知:
通知#1:昨天下午3:00起火,每天重复一次
通知#2:今天下午5:00点火,每天重复一次
通知#3:明天下午6:00点火,每天重复一次
鉴于目前是下午4点,下一个将发出的本地通知是通知2
如何检索此本地通知并获取其日期
我知道我可以在一个数组中检索这些本地通知,但如何根据今天的日期获取下一个将触发的通知?您任务的主要目标是确定给定日期后的“下一个触发日期” 每次通知的日期。
UILocalNotification
的NSLog()
输出显示下一个火灾日期,
但不幸的是,它似乎不能作为(公共)财产使用
我已从(使用小字体)获取代码
改进)并将其作为UILocalNotification
的类别方法重写。
(这并不完美。它不包括时区已被删除的情况。)
已分配给通知。)
使用它,您可以根据
下次火灾日期:
NSArray *notifications = @[notif1, notif2, notif3];
NSDate *now = [NSDate date];
NSArray *sorted = [notifications sortedArrayUsingComparator:^NSComparisonResult(UILocalNotification *obj1, UILocalNotification *obj2) {
NSDate *next1 = [obj1 myNextFireDateAfterDate:now];
NSDate *next2 = [obj2 myNextFireDateAfterDate:now];
return [next1 compare:next2];
}];
现在,
sorted[0]
将是下一个发出的通知。非常感谢您的详细回复!真棒的答案,至少值得+2!当您复制并粘贴此代码时,请注意switch语句,因为您可能需要在此处添加一些额外的代码:)@MartinR您可以根据[NSTimeZone defaultTimeZone]更新您的代码吗?请查看此问题。请更新此奇妙的代码以涵盖时区。
NSArray *notifications = @[notif1, notif2, notif3];
NSDate *now = [NSDate date];
NSArray *sorted = [notifications sortedArrayUsingComparator:^NSComparisonResult(UILocalNotification *obj1, UILocalNotification *obj2) {
NSDate *next1 = [obj1 myNextFireDateAfterDate:now];
NSDate *next2 = [obj2 myNextFireDateAfterDate:now];
return [next1 compare:next2];
}];