iosnscalendarekeventekeventkit

How to keep track of events added by my app in iphone calender


I get events from a web service in my application, every event has an unique identifier.

If the user wants to push that event to native calender I will save that event in native but how would I know if that event is already existing in the native Calendar as I can't set eventIdentifier property of EKEvent object

I tried subclassing EKEvent and adding my own identifier

eventStore = [[EKEventStore alloc] init];
MyEvent *event = [MyEvent eventWithEventStore:eventStore];
event.myEventIdentifier = @"MyEventIdentifier";
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
event.startDate = [NSDate date];
event.endDate = [NSDate dateWithTimeIntervalSinceNow:10000];
event.title = @"MyEventTitle";
[eventStore saveEvent:event span:EKSpanThisEvent error:nil];

But when I retrive event object I dont get my subclass object and it was throwing an exception when I called

[event valueForKey:@"MyEventIdentifier"];

Now as you can see, I can't set eventIdentifier property in EKEvent class, also subclassing EKEvent doesn't work.

How can I achieve the required functionality, any suggestions?


Solution

  • Im looking into EKEvent for something similar, but EKEvent does has an identifier of which you can access.

    Once you save the event, you can access its identifier,

    NSString *eventID = [NSString stringWithFormat:@"%@", event.eventIdentifier];
    

    Save this string and use it to remove the events, but note event.eventIdentifier is READ only,