Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Based on <a href="http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/EventKitProgGuide/ReadingAndWritingEvents.html#//apple_ref/doc/uid/TP40004775-SW1">Apple Documentation</a>, this has changed a bit as of iOS 6.0.</p> <p>1) You should request access to the user's calendar via "requestAccessToEntityType:completion:" and execute the event handling inside of a block.</p> <p>2) You need to commit your event now or pass the "commit" param to your save/remove call</p> <p>Everything else stays the same...</p> <p>Add the EventKit framework and <code>#import &lt;EventKit/EventKit.h&gt;</code> to your code.</p> <p>In my example, I have a NSString *savedEventId instance property.</p> <p>To add an event:</p> <pre><code> EKEventStore *store = [EKEventStore new]; [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { if (!granted) { return; } EKEvent *event = [EKEvent eventWithEventStore:store]; event.title = @"Event Title"; event.startDate = [NSDate date]; //today event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; //set 1 hour meeting event.calendar = [store defaultCalendarForNewEvents]; NSError *err = nil; [store saveEvent:event span:EKSpanThisEvent commit:YES error:&amp;err]; self.savedEventId = event.eventIdentifier; //save the event id if you want to access this later }]; </code></pre> <p>Remove the event:</p> <pre><code> EKEventStore* store = [EKEventStore new]; [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { if (!granted) { return; } EKEvent* eventToRemove = [store eventWithIdentifier:self.savedEventId]; if (eventToRemove) { NSError* error = nil; [store removeEvent:eventToRemove span:EKSpanThisEvent commit:YES error:&amp;error]; } }]; </code></pre> <p>This adds events to your default calendar, if you have multiple calendars then you'll have find out which one that is</p> <p><em>Swift version</em></p> <p>You need to import the EventKit framework</p> <pre><code>import EventKit </code></pre> <p>Add event</p> <pre><code>let store = EKEventStore() store.requestAccessToEntityType(.Event) {(granted, error) in if !granted { return } var event = EKEvent(eventStore: store) event.title = "Event Title" event.startDate = NSDate() //today event.endDate = event.startDate.dateByAddingTimeInterval(60*60) //1 hour long meeting event.calendar = store.defaultCalendarForNewEvents do { try store.saveEvent(event, span: .ThisEvent, commit: true) self.savedEventId = event.eventIdentifier //save event id to access this particular event later } catch { // Display error to user } } </code></pre> <p>Remove event</p> <pre><code>let store = EKEventStore() store.requestAccessToEntityType(EKEntityTypeEvent) {(granted, error) in if !granted { return } let eventToRemove = store.eventWithIdentifier(self.savedEventId) if eventToRemove != nil { do { try store.removeEvent(eventToRemove, span: .ThisEvent, commit: true) } catch { // Display error to user } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload