我使用下面的代码添加事件,我的代码多次调用,所以我有重复的事件,是否有任何想法防止重复
提前谢谢
EKEvent *event = [EKEvent eventWithEventStore:es];
NSDateFormatter *dateFormats = [[NSDateFormatter alloc]init];
[dateFormats setDateFormat:@"yyy-MM-dd"];
NSDate *date1 = [[NSDate alloc] init];
NSDate *date2 = [[NSDate alloc] init];
date1 = nil;
date2 = nil;
date1 = [dateFormats dateFromString:event2.from_date];
date2 = [dateFormats dateFromString:event2.to_date];
event.title = event2.event_title;
event.allDay = NO;
event.startDate = date1;
event.endDate = date2;
[event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f *60.0f *24]];
//put here if start and end dates are same
[event setCalendar:[es defaultCalendarForNewEvents]];
[es saveEvent:event span:EKSpanThisEvent commit:YES error:nil];
答案 0 :(得分:1)
我的回答是基于这个教程Calendar event management tutorial。所以当然如果事情没有正确排列,请参考它。
EKEvent *event = [EKEvent eventWithEventStore:es];
NSDate *date1 = [NSDate new];
NSDate *date2 = [NSDate new];
date1 = nil;
date2 = nil;
date1 = [dateFormats dateFromString:event2.from_date];
date2 = [dateFormats dateFromString:event2.to_date];
event.title = event2.event_title;
event.allDay = NO;
event.startDate = date1;
event.endDate = date2;
NSPredicate *predicate = [es predicateForEventsWithStartDate:event2.from_date endDate:event2.to_date calendars:nil];
NSArray *eventsOnDate = [es eventsMatchingPredicate:predicate];
__block BOOL eventExists = NO;
[eventsOnDate enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
EKEvent *eventToCheck = (EKEvent*)obj;
if([event.title isEqualToString:eventToCheck.title])
{
eventExists = YES;
*stop = YES;
}
}];
if(! eventExists) {
[event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f *60.0f *24]];
//put here if start and end dates are same
[event setCalendar:[es defaultCalendarForNewEvents]];
[es saveEvent:event span:EKSpanThisEvent commit:YES error:nil];
NSError *saveEventError;
[es saveEvent:event span:EKSpanThisEvent error: &saveEventError];
if(saveEventError) {
//ERROR OCCURED WHILE SAVING
} else {
//SUCCESSFULLY SAVED
}
} else {
// EVENT ALREADY EXISTS
}