Получить ошибку при получении текущей даты с помощью NSDateComponents


Я пытаюсь получить текущую дату с помощью NSDateComponents. (Тогда я буду менять недели, месяцы и т. д.) Вот код:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar component:(NSCalendarUnitCalendar |
                                                        NSCalendarUnitYear |
                                                        NSCalendarUnitMonth |
                                                        NSCalendarUnitDay) fromDate:[NSDate date]];

Xcode дает мне следующее предупреждение:

Incompatible integer to pointer conversion initializing 'NSDateComponents *__string' with an expression of type...'

И Ошибка:

Implicit conversion of 'NSInteger' (aka 'long') to 'NSDateComponents *' is disallowed with ARC
2 2

2 ответа:

Вы вызываете метод component (который возвращает единственное числовое значение компонента), и вы намеревались вызвать components (который возвращает полный объект NSDateComponents).

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:[NSDate date]];

Используйте component, чтобы добавить 1 единицу, к которой вы хотите получить доступ. Используйте components для более чем одной единицы измерения.