Сохраняйте это простым, безопасным и читабельным! (.... KISSAR?)
#define FRIDAY 6
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
dayComponent.day = 1;
NSDate *nextFriday = [NSDate date];
NSInteger iWeekday = [[gregorian components:NSWeekdayCalendarUnit fromDate:nextFriday] weekday];
while (iWeekday != FRIDAY) {
nextFriday = [gregorian dateByAddingComponents:dayComponent toDate:nextFriday options:0];
iWeekday = [[gregorian components:NSWeekdayCalendarUnit fromDate:nextFriday] weekday];
}
Теперь nextFriday
имеет вашу дату.
Надеюсь, это поможет!
EDIT
Обратите внимание, что если текущая дата уже была пятницей, она вернет ее вместо следующей пятницы. Если это нежелательно, просто начните вводить nextFriday
днем позже (так, если бы текущая дата была пятницей, она начиналась бы в субботу, форсируя следующую пятницу. И если бы текущая дата была четвергом, вы автоматически получили бы следующую пятницу без необходимости петля).