2017-01-07 1 views
0

내가 실행하면 다음과 같은 (2017 년 1 월 7 일) : 다음신속한 사용자 알림 : nextTriggerDate가 nil이 아닌 이유는 무엇입니까?

 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 : 그레고리 (현재) timeZone가 : 유럽/스톡홀름 (현재) 1 년 : 2017 개월 : 1 일 : 8 시간 : 21 분 : 34 초 : 0 나노초 : 0 평일 : 1 주일 처음 : 2 쿼터 : 0 주일 월 : 1 주일 중순 : 1 년 포기 항상 : 2017 isLeapMonth : false

nextDate = nil

질문 : 왜 trigger.nextTriggerDate() = nil입니까?

UPDATE

: 나는 나의 dateComponents중복 - 결정된 할 수있는 느낌을 가지고 있었다.

var nextEvent = DateComponents() 
nextEvent.day = dateComponents.day 
nextEvent.hour = dateComponents.hour 
nextEvent.minute = dateComponents.minute 

let trigger = UNCalendarNotificationTrigger(dateMatching:nextEvent, repeats: false) 

나는 지금 그것을 정상적으로

nextDate = Optional(2017-01-08 20:34:00 +0000) 

된다 trigger.nextTriggerDate()를 호출 할 때 : 그래서 저는 단지 dateComponents의 날의 시간과 분을 포함하는이 nextEvent 소개했다. 하지만 왜 내가 트리거를 만들 때 dateComponents를 사용할 수 없는지 이해할 수 없습니다.

답변

2

내 테스트 중에 dateComponents.quarter = 0이 문제의 원인임을 알게되었습니다. 제로 쿼터가 분명히 틀리면, quarter = 1이어야합니다. 오래된 구성 요소에 잘못된 분기가있는 오래된 bug이있는 것 같습니다.

수동으로 dateComponents.quarter = 1 또는 dateComponents.quarter = nil을 수동으로 설정하면 모든 것이 작동하기 시작합니다.

+0

매우 구체적인 것은 아니기 때문에 이전 대답을 편집했습니다. 문제의 진정한 원인을 찾은 것 같습니다. – Sulthan

관련 문제