在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)
问题是:这里发生了什么?为什么后者起作用而前者却不起作用?
答案 0 :(得分:0)
如果您提供的日期成分过于具体,则似乎与触发器不匹配。它在documentation中表示“仅提供与触发器相关的日期部分。”
我也遇到了这个问题,我发现[.day, .month, .year, .hour, .minute, .second]
通常是安全的。