2012-01-19 3 views
2

Я пытаюсь получить номер недели года из-за NSDate с этим кодом:Сбой в NSDateComponents weekOfYear

int which = NSYearCalendarUnit | NSMonthCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekOfYearCalendarUnit | NSQuarterCalendarUnit; 
NSDate* date= [NSDate date]; 
NSDateComponents* comps= [[NSCalendar currentCalendar] components:which fromDate:date]; 

today.weekNumber= comps.weekOfYear; 

Однако, по какой-то причине происходит сбой, и заявив:

reason: -[NSDateComponents weekOfYear]: unrecognized selector sent to instance

остальные компоненты работают нормально, когда я раскомментировать НомерНедели часть:

int which = NSYearCalendarUnit | NSMonthCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekOfYearCalendarUnit | NSQuarterCalendarUnit; 
NSDate* date= [NSDate date]; 
NSDateComponents* comps= [[NSCalendar currentCalendar] components:which fromDate:date]; 

// today.weekNumber= comps.weekOfYear; 
today.month= comps.month; 
today.year= comps.year; 
today.quarter= comps.quarter; 
today.hour= comps.hour; 
today.minute= comps.minute; 
today.second= comps.second; 

Согласно документам, NSDateComponents должно иметь свойство под названием weekOfYear, не так ли?

Я смущен, действительно.

ответ

2

-weekOfYear метод доступен в NSDateComponents, начиная с версии 5.0 и поэтому, если вы пытаетесь использовать этот метод для более ранних версий ОС, что приведет к сбою.

+0

D'oh! Я не знал об этом. Есть ли другой способ получить weekOfYear, когда я на iOS 4? – user826955

+1

Проверьте свойство «неделя» - может быть, этого вам будет достаточно. Вы также можете попробовать играть с NSDateFormatter, чтобы получить это значение в виде строки, а затем преобразовать его в число (например, см. Обсуждение здесь http://www.iphonedevsdk.com/forum/iphone-sdk-development/10100-getting-week -количество-объективно-c.html) – Vladimir