festivos - sincronizar calendario iphone
Eliminando eventos del calendario de iPhone con EKEventStore (2)
Estoy intentando eliminar eventos que he creado a partir del calendario de iPhone.
Intenté esto, pero siempre devuelve NO:
[eventStore removeEvent:event span:EKSpanThisEvent error:&err];
Creé el evento de la siguiente manera y funciona:
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];
¿Hay alguna manera de eliminar este evento? O sería mejor que si trato de escribir este evento nuevamente, solo lo modifique en lugar de crear uno nuevo.
Gracias,
Después de crear el evento, guardo el eventIdentifier en una matriz:
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
NSString* str = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
[arrayofCalIDs addObject:str];
Para eliminar los eventos:
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];
Solo un FYI para la respuesta anterior. Se encuentra en la web en este enlace: http://tech.vniup.com/index.php/iphone/objective-c/how-to-delete-event-from-iphone-calendar-programmatically.html
Mi única sugerencia es que si estás construyendo una matriz de objetos, idealmente, cada objeto sería el evento. A continuación, realice una operación de matriz inversa porque el último evento siempre estará en la parte inferior.
NSMutableArray *reverseArray = [NSMutableArray arrayWithCapacity:[eventsList count]];
for (id element in [eventsList reverseObjectEnumerator]) {
[reverseArray addObject:element];
}
eventsList = reverseArray;
Y también en la pantalla de los eventos sea agradable con sus usuarios y muestre la fecha de inicio del evento.
De todos modos, después de tener un conjunto de objetos que son EKEvents, puede hacer esto, que es MUCHO más fácil.
EKEvent *eventToRemove = [myEventStore eventWithIdentifier:thisEvent.eventIdentifier ];
if ([eventToRemove.eventIdentifier length] > 0) {
NSError* error = nil;
[myEventStore removeEvent:eventToRemove span:EKSpanThisEvent error:&error];
}
Luego puede eliminar ese mismo evento de su matriz de eventos para la visualización de la tabla ... ¡fácil!