我正在嘗試創建日曆應用來顯示事件。檢查NSDate是否發生在特定模式
其中一些事件是經常性事件(每日,每週)。
比方說,有兩個事件eventA(每週),這是在一月創建10 2012年
因此當用戶打開當月日曆,我需要找出這些事件是否eventB(每日)今天將根據其反覆出現的模式顯示。
現在我在做下列方式:
獲取活動的開始日期
NSDate * startDate
產生偏移尾
NSDate *offSetEndDate = [startDate dateByAddingYears:10];
我想顯示這些事件utpo從他們的開始日期起10年
現在將事件發生日期添加到陣列:
//Daily
if (recurring==1) {
NSDate *nextOccurenceDate = [startDate dateByAddingDays:1];
BOOL eventCrossedOffSetDate = NO;
while (eventCrossedOffSetDate == NO) {
[dateArr addObject:[nextOccurenceDate shortDateString]];
nextOccurenceDate = [nextOccurenceDate dateByAddingDays:1];
if (![self isDateValid:nextOccurenceDate andEndDate:offsetEndDate]) {
eventCrossedOffSetDate = YES;
}
}
}
這生成日期的陣列用於從其開始日期到當前日期的事件。
我使用這個數組來檢查當前日期/用戶選擇日是否存在顯示/隱藏事件。
此方法只比較兩個日期。
-(BOOL)isDateValid:(NSDate*)startDate andEndDate:(NSDate*)endDate{
if ([startDate compare:endDate] == NSOrderedDescending) {
//"startDate is later than endDate
return NO;
} else if ([startDate compare:endDate] == NSOrderedAscending) {
//startDate is earlier than endDate
return YES;
} else {
//dates are the same
return YES;
}
return NO;
}
這當然做的工作,但對於更多的事件,這需要太多的時間來執行計算和返回數組。
有什麼我可以做的改善呢?
我的客戶需要的應用程序。平日裏你的意思是什麼? –