我正在尝试删除我在iPhone日历中创建的事件。
我尝试了这个,但它总是返回NO:
[eventStore removeEvent:event span:EKSpanThisEvent error:&err];
我按如下方式创建了该事件,它可以工作:
eventStore = [[EKEventStore alloc] init];
event = [EKEvent eventWithEventStore:eventStore];
event.title = @"EVENT TITLE";
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd:HH:mm"];
NSDate * date = [[NSDate alloc] init];
date = [dateFormatter dateFromString:@"2010-8-15:12:30"];
[date retain];
event.startDate = date;
event.endDate = [[NSDate alloc] initWithTimeInterval:600 sinceDate:event.startDate];
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
有没有办法删除此活动?或者,如果我再次尝试编写此事件,它只会修改它而不是创建一个新事件会更好。
谢谢,
答案 0 :(得分:6)
创建事件后,我将eventIdentifier保存在一个数组中:
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
NSString* str = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
[arrayofCalIDs addObject:str];
要删除事件:
EKEventStore* store = [[[EKEventStore alloc] init] autorelease];
EKEvent* event2 = [store eventWithIdentifier:[arrayofCalIDs objectAtIndex:i]];
if (event2 != nil) {
NSError* error = nil;
[store removeEvent:event2 span:EKSpanThisEvent error:&error];
}
[myPath release];
答案 1 :(得分:0)
上述答案仅供参考。它可以通过以下链接在网上找到: http://tech.vniup.com/index.php/iphone/objective-c/how-to-delete-event-from-iphone-calendar-programmatically.html
我唯一的建议是,如果要构建一个对象数组,理想情况下每个对象都是事件。然后执行反向数组操作,因为最新事件将始终位于底部。
NSMutableArray *reverseArray = [NSMutableArray arrayWithCapacity:[eventsList count]];
for (id element in [eventsList reverseObjectEnumerator]) {
[reverseArray addObject:element];
}
eventsList = reverseArray;
并且在事件的显示中对用户友好并显示事件的开始日期。
无论如何,在你有一个EKEvents的数组对象后,你可以做到这一点,这更容易。
EKEvent *eventToRemove = [myEventStore eventWithIdentifier:thisEvent.eventIdentifier ];
if ([eventToRemove.eventIdentifier length] > 0) {
NSError* error = nil;
[myEventStore removeEvent:eventToRemove span:EKSpanThisEvent error:&error];
}
然后你可以从表格显示的事件数组中删除相同的事件....简单!