UNCalendarNotificationTrigger不适用于完整日期组件

时间:2019-01-09 08:51:28

标签: ios swift notifications

an earlier question中,我提到了安排本地通知的问题。造成此问题的真正原因是,我习惯于按照以下代码创建触发器,但该触发器不起作用:

let calendar = ...
let notificationDate = ...

let dateComponents = calendar.dateComponents(in: calendar.timeZone, from: notificationDate)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)

但是,以下代码确实有效:

let calendar = ...
let notificationDate = ...

let dateComponents = calendar.dateComponents([.day, .month, .year, .hour, .minute], from: notificationDate)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)

问题是:这里发生了什么?为什么后者起作用而前者却不起作用?

1 个答案:

答案 0 :(得分:0)

如果您提供的日期成分过于具体,则似乎与触发器不匹配。它在documentation中表示“仅提供与触发器相关的日期部分。”

我也遇到了这个问题,我发现[.day, .month, .year, .hour, .minute, .second]通常是安全的。