以下を実行すると(2017年1月7日):
let dateComponents = Calendar.current.dateComponents(in: TimeZone.current, from: date)
print("dateComponents = \(dateComponents)")
let trigger = UNCalendarNotificationTrigger(dateMatching:dateComponents, repeats: false)
let nextDate = trigger.nextTriggerDate()
print("nextDate = \(nextDate)")
次に、次の出力が得られます。
dateComponents = calendar: グレゴリオ暦 (現在) timeZone: ヨーロッパ/ストックホルム (現在) era: 1 年: 2017 月: 1 日: 8 時間: 21 分: 34 秒: 0 ナノ秒: 0 平日: 1 weekdayOrdinal: 2 四半期: 0 weekOfMonth : 1 weekOfYear: 1 yearForWeekOfYear: 2017 isLeapMonth: false
次の日付 = なし
質問: なぜtrigger.nextTriggerDate() = nil
ですか?
更新:dateComponents
私は自分が過剰決定されている可能性があると感じていました. したがってnextEvent
、dateComponents の日時のみを含む を導入しました。
var nextEvent = DateComponents()
nextEvent.day = dateComponents.day
nextEvent.hour = dateComponents.hour
nextEvent.minute = dateComponents.minute
let trigger = UNCalendarNotificationTrigger(dateMatching:nextEvent, repeats: false)
私が今呼び出すtrigger.nextTriggerDate()
と、
nextDate = Optional(2017-01-08 20:34:00 +0000)
あるべきように。しかし、トリガーを作成するときに dateComponents を使用できない理由がわかりません。