我正在尝试创建日历应用来显示事件。检查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;
}
这当然做的工作,但对于更多的事件,这需要太多的时间来执行计算和返回数组。
有什么我可以做的改善呢?
我的客户需要的应用程序。平日里你的意思是什么? –