NSCalendar [_NSCopyOnWriteCalendarWrapper компонент:fromDate:]: ошибка

В tableviewcontroller у меня есть этот код, чтобы получить массив дней от 0 до 6, где это порядок с текущим dayNumber первым.

self.dayOrder=[NSMutableArray new];

NSCalendar *cal=[NSCalendar currentCalendar];

NSInteger dayNumber = [cal component:NSCalendarUnitWeekday fromDate:[NSDate date]]-1; // Sunday gives 0,

for (int i=0;i<7;i++) {
    [self.dayOrder addObject:[NSNumber numberWithInteger:dayNumber]];
    dayNumber=(dayNumber+1)%7;
}

Когда я перехожу к этому контроллеру представления, я получаю эту ошибку *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSCopyOnWriteCalendarWrapper component:fromDate:]: unrecognized selector sent to instance 0x15e4b850'

И когда я добавляю точку останова ALL Exceptions, в этой строке происходит ошибка

 NSInteger dayNumber = [cal component:NSCalendarUnitWeekday fromDate:[NSDate date]]-1; // Sunday gives 0,

Кажется, он работает на моем iPhone 6, но на iOS 8, но не на iPone 4,5c, на iOS7.

Не уверен, почему это происходит, любая помощь, почему это происходит, будет принята с благодарностью.

Спасибо за помощь!!!

1 ответ

Решение

component:fromDate: метод был добавлен в NSCalendar в iOS 8.0.

Если вам нужно поддерживать более старые версии iOS, используйте более старые components:fromDate: метод и извлечь нужное значение из полученного NSDateComponents,

NSDateComponents *components = [cal components:NSCalendarUnitWeekday fromDate:[NSDate date]];
NSInteger weekday = [components weekday] - 1;
Другие вопросы по тегам