Suppression d'un événement à l'aide du kit d'events sur l'iPhone

J'utilise Event Kit dans mon application iOS et crée un événement en utilisant Event Kit. Je suis capable de le créer mais je veux donner la possibilité de le supprimer aussi. Mais je ne suis pas capable de faire ça. Je sais qu'il existe une méthode pour EKEventStore pour supprimer un événement, mais je ne suis pas en mesure de créer un object événement. J'ai un identifiant d'événement sous forme de string mais je ne suis pas capable de créer un object événement en l'utilisant. Quelqu'un peut-il me guider s'il vous plaît pour le faire?

Cordialement Pankaj

Lorsque vous créez un événement, enregistrez son identifiant comme ceci:

 NSSsortingng* str = [[NSSsortingng alloc] initWithFormat:@"%@", event.eventIdentifier]; 

passez l'identifiant pour supprimer l'événement, voici le code

 EKEventStore* store = [[EKEventStore alloc] init]; EKEvent* event2 = [store eventWithIdentifier:str]; if (event2 != nil) { NSError* error = nil; [store removeEvent:event2 span:EKSpanThisEvent error:&error]; } 

Faites-en reference à event.eventIdentifier change la valeur. Vous devez donc garder une trace de l'événement.title que vous avez défini pour l'événement et accéder à l'événement et le supprimer

 NSDate *startDate = <EVENT_START_DATE>; NSDate *endDate = <EVENT_END_DATE>; NSPredicate *predicateForEvents = [eventStore predicateForEventsWithStartDate:startDate endDate:endDate calendars:[NSArray arrayWithObject:[eventStore defaultCalendarForNewEvents]]]; //set predicate to search for an event of the calendar(you can set the startdate, enddate and check in the calendars other than the default Calendar) NSArray *events_Array = [eventStore eventsMatchingPredicate: predicateForEvents]; //get array of events from the eventStore for (EKEvent *eventToCheck in events_Array) { if( [eventToCheck.title isEqualToSsortingng: @"yourEventTitle"] ) { NSError *err; BOOL success = [eventStore removeEvent:eventToCheck span:EKSpanThisEvent error:&err]; NSLog( @"event deleted success if value = 1 : %d", success ); break; } } 

Jetez un oeil à EKEvent avec eventWithIdentifier sur iOS

Je trouve également que le code suivant fonctionne

 // eventWithIdentifier returns nil for the external identifier //EKEvent *eventToRemove = [eventStore eventWithIdentifier:self.expiryCalendarExternalIdentifier]; // So I'm using this method, which seems to work. - (EKEvent *) getEventForIdentifer: (NSSsortingng *) eventIdentifier { EKEventStore *eventStore = [Settings getEventStore]; NSArray *items = [eventStore calendarItemsWithExternalIdentifier:eventIdentifier]; if ([items count] == 1) { return items[0]; } else { [LogFile write:@"getEventForIdentifer: more than one occurrence of event, or no event!"]; return nil; } } 

Un exemple de ce code en action (non testé):

 EKEventStore *eventStore = [[EKEventStore alloc] init]; EKEvent *newCalendarEvent = [EKEvent eventWithEventStore:eventStore]; // Just because we created an EKEvent, the calendarItemExternalIdentifier property of that event has been set. // I store calendarItemExternalIdentifier (an NSSsortingng) in a Core Data // object, and later fetch it back from core data. // Something like: NSManagedObjectSubclass *coreDataObject = ... coreDataObject.externalId = newEvent.calendarItemExternalIdentifier; // So, now let's say we pull the calendarItemExternalIdentifier ssortingng from // Core Data, and want to remove the event. NSSsortingng *externalId = ... // get calendarItemExternalIdentifier from Core Data // getEventForIdentifer method from above EKEvent *eventToRemove = [self getEventForIdentifer:externalId]; NSError *anError = nil; [eventStore removeEvent:eventToRemove span:EKSpanThisEvent error:&anError]; if (anError) { // Something has gone wrong. Report the error. }