0
我希望能够重用此方法,以便它不受在for循环声明中调用的类的限制。将for循环转换为接受ID类型
问题是编译器不知道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
@是的,我会通过的任何对象将具有它的时间和持续时间属性 –