Я хочу, чтобы иметь возможность повторно использовать этот метод, чтобы он не ограничивался классом, вызываемым в объявлении цикла цикла.Преобразование цикла for для приема ID-типа
Проблема заключается в том, что компилятор понятия не имеет, что такое идентификатор, поэтому я не могу использовать. обозначение на нем. Мне нужно, чтобы бросить его в какой-то тип класса событий, я буду мимо него, вместо того, чтобы повторить метод SpecialEvent1
SpecialEvent2
SpecialEvent3
Таким образом, вместо for (SpecialEvent1 *event in day)
я хочу, чтобы быть в состоянии сделать что-то вроде for (id event in day)
но проблемы происходит, когда я пытаюсь получить доступ к времени или длительности свойства
- (NSArray *)sumDay:(NSArray *)day {
NSInteger morning = 0, afternoon = 0, evening = 0, night = 0;
for (SpecialEvent1 *event in day) {
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:event.time];
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitHour fromDate:date];
NSInteger hour = [components hour];
if (hour < 12) {
morning += event.duration;
}
else if (hour < 18) {
afternoon += event.duration;
}
else if (hour < 20) {
evening += event.duration;
}
else {
night += event.duration;
}
}
NSArray *sums = @[@(morning), @(afternoon), @(evening), @(night)];
return sums;
}
вы не задали вопрос или действительно объяснил проблему. вы хотите, чтобы вы использовали цикл с любым объектом, который имеет переменную 'time'? – Wain
Возможно, вы захотите использовать протокол (который будет отвечать на «время») или использовать класс «Event», а «SpecialEvent1», 'SpecialEvent2',' SpecialEvent3' наследует. – Larme
@Wain yes, любой объект, который я пройду, будет иметь свойство времени и продолжительности на нем –