2016-09-19 8 views
0

Я конвертирую часть своего действительно старого кода из Objective C в Swift, и я наткнулся на это чудовище. Я не могу точно понять, что я здесь делаю. Глядя на документацию по этому методу rangeOfUnit, я остаюсь царапать голову.Что такое диапазон NSCalendarOfUnit: 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), который содержит указанные даты, соответственно, что означает полночь. Указатели fromDate и toDate содержат результаты при возврате. Указатель для параметра interval вернет 86400, который является NSTimeInterval блока календаря.

NSCalendar имеет метод, чтобы сделать то же самое гораздо проще:

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