iOS – Eliminar evento recurrente EKEvent, el evento aparece nuevamente

Tengo un evento recurrente en el calendar. Estoy borrando un solo evento usando este código [store removeEvent:event span:EKSpanThisEvent commit:YES error:&errorThis]; y este método me devuelve true pero el evento no se borra del calendar

En la reference de class EKCalendarItem que usa la propiedad calendarItemExternalIdentifier, encuentra esto

Los identificadores de events recurrentes son los mismos para todas las apariciones. Si desea diferenciar entre ocurrencias, puede usar la date de inicio

Por lo que desea eliminar solo una recurrencia, tiene que hacer algo como esto:

 NSPnetworkingicate *pnetworkingicate = [eventStore pnetworkingicateForEventsWithStartDate:startDate endDate:endDate calendars:calendars]; NSArray *theEvents = [eventStore eventsMatchingPnetworkingicate:pnetworkingicate]; NSString *recurrenceEventIdentifier; for(EKEvent * theEvent in theEvents) { if([theEvent.eventIdentifier isEqualToString: recurrenceEventIdentifier] && ![eventStore removeEvent:theEvent span:EKSpanThisEvent error:&error]) { NSLog(@"Error in removing event: %@",error); } } 

En su lugar, elimina solo la primera aparición. Si desea eliminar todos los events recurrentes, simplemente cambie el parámetro "span" en EKSpanFutureEvents.

EDITAR: ahora solo elimina el evento recurrente coincidente, no todo.

Asegúrese de tener una sola instancia de EKEventStore en un patrón único en su aplicación:

 static EKEventStore *eventStore = nil; + (EKEventStore *)getEventStoreInstance { if (eventStore == nil){ @synchronized(self){ if (eventStore == nil){ eventStore = [[EKEventStore alloc] init]; } } } return(eventStore); }