Я понимаю, что ваша проблема в том, что будущие даты называются "четверг", "пятница", ...?
По сути, вам нужно преобразовать этот текст в число дня недели(самый простой подход - это «если лестница», хотя, если вы хотите быть чувствительным к локали, вы можете использовать более сложную схему).Затем вычислите сегодняшний номер дня недели и вычтите его из первого числа.Если результат равен отрицательный , добавьте 7. (Если результат равен нулю, это может означать, что оно относится к сегодняшнему дню, или это может означать, что оно относится к неделе с сегодняшнего дня - если вы хотите последнее,добавьте 7, если результат равен ноль или отрицательный .) Затем, чтобы вычислить дату, представленную входным днем недели, добавьте вышеупомянутый вычисленный результат, умноженный на ONE_DAY, к текущей дате.
Подробнее
Вы знаете, что такое "если лестница", конечно:
if ([day isEqualToString:@"Sunday"]) {
dayNumber = 1;
}
else if ([day isEqualToString:@"Monday"]) {
dayNumber = 2;
}
else if ([day isEqualToString:@"Tuesday"]) {
....
Чтобы получить день недели от текущей даты, используйте что-то вроде:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSWeekdayCalendarUnit fromDate:today];
NSInteger todayNumber = [components weekday];
Вычтите сегодня число из дня.Если результат отрицательный, добавьте 7 к результату.Затем это значение говорит вам, сколько дней будет в будущем «дне», и исходя из этого вы можете рассчитать его дату.