使用EKEventStore从iPhone日历中删除事件

使用EKEventStore从iPhone日历中删除事件,iphone,events,calendar,Iphone,Events,Calendar,我正在尝试从iPhone日历中删除我创建的事件 我尝试过这个,但它总是返回NO: [eventStore removeEvent:event span:EKSpanThisEvent error:&err]; 我按如下方式创建了该活动,它可以正常工作: eventStore = [[EKEventStore alloc] init]; event = [EKEvent eventWithEventStore:eventStore]; event.title = @"EVENT

我正在尝试从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]; 
是否有方法删除此事件?或者,如果我尝试再次编写此事件,它只会修改它,而不是创建一个新事件,这会更好


谢谢,

创建事件后,我将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];

以上答案仅供参考。可通过以下链接在网站上找到:

我唯一的建议是,如果您正在构建一个对象数组,那么理想情况下,每个对象都是事件。然后执行反向数组操作,因为最新事件始终位于底部

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];
            }

然后,您可以从表显示的事件数组中删除相同的事件…简单

尝试捕获错误(记录错误),否则代码看起来正常。或者尝试使用开始日期和结束日期的第一个简单日期,如[NSDate date]。如果要以其他方法删除,请首先使用[eventStore eventWithIdentifier:eventID]获取事件;如何确保使用相同的eventstore?文档中说“如果事件不在要开始的事件存储中,则此方法返回NO。”我不是说eventstore,而是说保存事件的eventIdentifier,比如NSString*eventID=event.EventIdentifierHanks。我现在可以删除事件:)数组存储在哪里?核心数据?我使用[NSFileManager defaultManager]和WriteFile将其保存为文件。以下是[store eventWithIdentifier:[arrayofCalIDs objectAtIndex:I]]中的“I”是什么;