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
@是的,我會通過的任何對象將具有它的時間和持續時間屬性 –