2014-11-06 2 views
2

В tableviewcontroller У меня есть этот код, чтобы получить массив дней от 0 до 6, где он сначала выполняется с текущим номером dayNumber.NSCalendar [_NSCopyOnWriteCalendarWrapper component: fromDate:]: error

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'

И когда я добавляю все исключения ИЗЛОМА ошибки встречающаяся в этой строке

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

Это, кажется, работая на моем iPhone 6, но который находится на iOS 8, но не iPone 4,5c, которые находятся на iOS7.

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

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

ответ

16

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

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

NSDateComponents *components = [cal components:NSCalendarUnitWeekday fromDate:[NSDate date]]; 
NSInteger weekday = [components weekday] - 1; 
+0

в порядке, так что я есть это 'NSDateComponents * день = [кал компонента: NSCalendarUnitWeekday FromDate: [дата NSDate]]; 'а затем как мне получить это в целое число – iqueqiorio

+0

Я обновил ответ. – rmaddy