Вы не инициализируете NSDateComponents должным образом, поэтому день недели не возвращает ожидаемое вами значение.См. документацию .
. Теперь вы можете инициализировать ее, используя текущую дату:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
int weekday = [weekdayComponents weekday];
Позднее редактирование: Инициализация является частьюпроблема, чтобы исправить ошибку компилятора:
NSString * const weekdayNames[8] =
на
NSString const * weekdayNames[8] =
(указатель на постоянную строку NSString).
Однако, когда вы это делаете, выбудет выдано предупреждение "передача аргумента 1 из 'setText:' удаляет квалификаторы из целевого типа указателя" , потому что вы передаете постоянный указатель на функцию, которая ожидает указатель.Чтобы исправить предупреждение, вы можете привести аргумент setText к (NSString *).
Возможно, имеет смысл вообще удалить квалификатор const.Строки NSS уже неизменны в Objective-C, поэтому они уже являются константами.