NSFCalendar dateFromComponents: компоненты не могут быть нулевыми

После выполнения следующего кода

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *expiryDateComponents = [calendar components:(NSCalendarUnitEra|NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay) fromDate:aDate];

вы получаете следующее исключение без сбоев

*** -[__NSCFCalendar dateFromComponents:]: components cannot be nil
Future exception.
A few of these errors are going to be reported with this complaint, then further violations will simply be ignored.

person damirstuhec    schedule 05.08.2015    source источник
comment
Не совсем вопрос, скорее Эй, посмотрите, что я нашел.   -  person zaph    schedule 05.08.2015
comment
@zaph О, разве это не один из вариантов использования SO? Есть причина, по которой у них есть функция под названием «Ответьте на свой вопрос» — поделитесь своими знаниями, задавая новый вопрос. ;)   -  person damirstuhec    schedule 05.08.2015
comment
Да и нет. Должны ли мы все делать посты каждый раз, когда обнаруживаем что-то тривиальное или нет? Тысячи разработчиков раз в несколько связей в неделю? В этом случае неочевидное сообщение об ошибке? И решение: не передавать ноль для даты; конечно, вы не передаете nil, если вам нужны компоненты даты.   -  person zaph    schedule 05.08.2015
comment
@zaph Да и нет? Ха, скажи это ТАКИМ людям. В следующий раз, когда кто-то потеряет час или два из-за такой тривиальной вещи, этот ответ будет иметь для него большой смысл. Ой, простите, я забыл, что вы из тех разработчиков, которые никогда не натыкаются на тривиальные вещи. ;)   -  person damirstuhec    schedule 05.08.2015


Ответы (1)


tl;dr убедитесь, что параметр fromDate не равен нулю.

Пояснение:

NSCalendar не знает, как поступить в ситуации, когда вы даете ему ноль NSDate. API выдает вам предупреждение вместо исключения сбоя. Имейте в виду, что это поведение может измениться и может привести к сбою в будущем из-за изменений API.

person damirstuhec    schedule 05.08.2015