2016-09-19 3 views
0

정말 오래된 코드를 Objective C에서 Swift로 변환하고 있는데,이 괴물을 가로 질렀습니다. 내가 여기서 뭘하고 있는지 정확히 알 수는 없다. 그 rangeOfUnit 메서드에 대한 문서를 보면 나는 머리를 긁적 거리고 있습니다.NSCalendar의 rangeOfUnit은 무엇입니까? startDate : interval : forDate가 실제로하고있는 작업은 무엇입니까?

나는 그 두 날짜 사이에 얼마나 많은 날이 있는지를 알아내는 것 같지만, 그게 인 것 같습니다. 이상한 방법입니다.

NSDate *fromDate, *toDate; 
[self.calendar rangeOfUnit:NSCalendarUnitDay startDate:&fromDate interval:0 forDate:event.startDate]; 
[self.calendar rangeOfUnit:NSCalendarUnitDay startDate:&toDate interval:0 forDate:event.endDate]; 

NSInteger difference = labs([self.calendar components:NSCalendarUnitDay fromDate:fromDate toDate:toDate options:0].day) + 1; 

답변

0

있어서 rangeOfUnit 자정을 의미하는 각각 소정의 기간을 포함 (여기 day) 일정 단위의 개시를 계산한다. 포인터 fromDatetoDate에는 반환시 결과가 포함됩니다. interval 매개 변수에 대한 포인터는 달력 단위의 NSTimeInterval 인 86400을 반환합니다.

NSDate *fromDate = [self.calendar startOfDayForDate:event.startDate]; 
:

NSCalendar

훨씬 쉽게 같은 일을 할 수있는 방법이있다