Cover by Vandad Nahavandipoor

Safari, the world’s most comprehensive technology and business learning platform.

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required

O'Reilly logo

14.3. Accessing the Contents of Calendars

Problem

You want to retrieve events of type EKEvent from a calendar of type EKCalendar on an iOS device.

Solution

Follow these steps:

  1. Instantiate an object of type EKEventStore.

  2. Using the calendars property of the event store (instantiated in step 1), find the calendar you want to read from.

  3. Determine the time and date where you want to start the search in the calendar and the time and date where the search must stop.

  4. Pass the calendar object (found in step 2), along with the two dates you found in step 3, to the predicateForEventsWithStartDate:endDate:calendars: instance method of EKEventStore.

  5. Pass the predicate created in step 4 to the eventsMatchingPredicate: instance method of EKEventStore. The result of this method is an array of EKEvent objects (if any) that fell between the given dates (step 3) in the specified calendar (step 2).

This code illustrates the above steps:

- (EKCalendar *) calDAVCalendarWithTitleContaining :(NSString *)paramDescription{ EKCalendar *result = nil; EKEventStore *eventStore = [[EKEventStore alloc] init]; for (EKCalendar *thisCalendar in eventStore.calendars){ if (thisCalendar.type == EKCalendarTypeCalDAV){ if ([thisCalendar.title rangeOfString:paramDescription].location != NSNotFound){ return thisCalendar; } } } return result; } - (void) readEvents{ /* Find a calendar to base our search on */ EKCalendar *targetCalendar = [self calDAVCalendarWithTitleContaining:@"gmail.com"]; /* If we could not find a CalDAV calendar ...

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required