从iPhone的日历中删除事件

STU*_*MER 14 cocoa-touch objective-c ios

我试图从用户请求的日历中删除一个事件.这就是我想出来的:

// Deleting Event
    EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
event.title     = appDelegate.title1;
event.startDate = appDelegate.recAddDate;
event.endDate   = appDelegate.currentDateName;
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore removeEvent:event span:EKSpanThisEvent error:&err];
Run Code Online (Sandbox Code Playgroud)

下面是我正在调用从事件数组中删除事件的函数.Items数组用于从iPhone日历中获取事件

- (BOOL)removeEvent:(EKEvent *)event span:(EKSpan)span error:(NSError **)error{
    VoiceRecorderAppDelegate *appDelegate = (VoiceRecorderAppDelegate *)[[UIApplication sharedApplication] delegate];
    [items removeObjectAtIndex:appDelegate.objectindexpath];
}
Run Code Online (Sandbox Code Playgroud)

tha*_*guy 16

首先,在向日历添加/保存事件时保存事件的eventId.

[eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 
NSString* str = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
[arrayofEventId addObject:str];
Run Code Online (Sandbox Code Playgroud)

然后标识要删除的事件,然后删除该事件.

EKEventStore* store = [[EKEventStore alloc] init];
EKEvent* eventToRemove = [store eventWithIdentifier:[arrayofEventId objectAtIndex:i]];
 if (eventToRemove != nil) {  
   NSError* error = nil;
  [store removeEvent:eventToRemove span:EKSpanThisEvent error:&error];
 } 
Run Code Online (Sandbox Code Playgroud)

另外,不要忘记从arrayofEventId中删除该事件.

  • 看起来它只是一个空的NSMutableArray,你可以自己声明它.[NSMutableArray array]; (2认同)