Удаление событий из календаря iPhone с EKEventStore - PullRequest
2 голосов
/ 14 августа 2010

Я пытаюсь удалить события, которые я создал, из календаря 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]; 

Есть ли способ удалить это событие?Или было бы лучше, если бы я попытался записать это событие снова, оно изменило бы его, а не создавало новое.

Спасибо,

Ответы [ 2 ]

6 голосов
/ 08 сентября 2010

После создания события я сохраняю 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];
0 голосов
/ 08 августа 2012

Просто к вашему сведению за ответ выше.Он находится в Интернете по этой ссылке: http://tech.vniup.com/index.php/iphone/objective-c/how-to-delete-event-from-iphone-calendar-programmatically.html

Мое единственное предложение состоит в том, что, если вы создаете массив объектов, каждый объект в идеале был бы событием.Затем выполните операцию обратного массива, потому что последнее событие всегда будет внизу.

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

Затем вы можете удалить это же событие из массива событий для отображения таблицы .... easy!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...