---
title: EKEventStore
framework: eventkit
role: symbol
role_heading: Class
path: eventkit/ekeventstore
---

# EKEventStore

An object that accesses a person’s calendar events and reminders and supports the scheduling of new events.

## Declaration

```swift
class EKEventStore
```

## Mentioned in

Retrieving events and reminders Accessing the event store Creating events and reminders

## Overview

Overview The EKEventStore class is an app’s point of contact for accessing calendar and reminder data. After initializing the event store, you must request access to events or reminders before attempting to fetch or create data. To request access to reminders, call requestFullAccessToReminders(completion:). To request access to events, call requestWriteOnlyAccessToEvents(completion:) or requestFullAccessToEvents(completion:). important: To request access to events and reminders, your app needs to include permission strings in its Info.plist file that explain to someone why the app needs access. For more information, see Accessing the event store. A typical workflow for using an event store is: Create a predicate, or a search query for events, with predicateForEvents(withStart:end:calendars:). Fetch and process events that match the predicate with the events(matching:) and enumerateEvents(matching:using:) methods. Save and delete events from the event store with the save(_:span:commit:) and remove(_:span:commit:) methods. Use similar methods to access and manipulate reminders. After receiving an object from an event store, don’t use that object with a different event store. This restriction applies to EKObject subclasses such as EKEvent, EKReminder, EKCalendar, and EKSource, as well as predicates that the event store creates. For example, don’t fetch an event from one event store, modify the event, and then pass it to save(_:span:) in a different store.

## Topics

### Creating event stores

- [init()](eventkit/ekeventstore/init().md)
- [init(sources:)](eventkit/ekeventstore/init(sources:).md)
- [eventStoreIdentifier](eventkit/ekeventstore/eventstoreidentifier.md)

### Requesting access to events and reminders

- [requestWriteOnlyAccessToEvents(completion:)](eventkit/ekeventstore/requestwriteonlyaccesstoevents(completion:).md)
- [requestFullAccessToEvents(completion:)](eventkit/ekeventstore/requestfullaccesstoevents(completion:).md)
- [requestFullAccessToReminders(completion:)](eventkit/ekeventstore/requestfullaccesstoreminders(completion:).md)
- [authorizationStatus(for:)](eventkit/ekeventstore/authorizationstatus(for:).md)
- [EKAuthorizationStatus](eventkit/ekauthorizationstatus.md)
- [EKEventStoreRequestAccessCompletionHandler](eventkit/ekeventstorerequestaccesscompletionhandler.md)
- [NSCalendarsFullAccessUsageDescription](bundleresources/information-property-list/nscalendarsfullaccessusagedescription.md)
- [NSCalendarsWriteOnlyAccessUsageDescription](bundleresources/information-property-list/nscalendarswriteonlyaccessusagedescription.md)
- [NSRemindersFullAccessUsageDescription](bundleresources/information-property-list/nsremindersfullaccessusagedescription.md)

### Accessing account sources

- [sources](eventkit/ekeventstore/sources.md)
- [delegateSources](eventkit/ekeventstore/delegatesources.md)
- [source(withIdentifier:)](eventkit/ekeventstore/source(withidentifier:).md)

### Saving and restoring state

- [commit()](eventkit/ekeventstore/commit().md)
- [reset()](eventkit/ekeventstore/reset().md)
- [refreshSourcesIfNecessary()](eventkit/ekeventstore/refreshsourcesifnecessary().md)

### Accessing calendars

- [defaultCalendarForNewEvents](eventkit/ekeventstore/defaultcalendarfornewevents.md)
- [defaultCalendarForNewReminders()](eventkit/ekeventstore/defaultcalendarfornewreminders().md)
- [calendars(for:)](eventkit/ekeventstore/calendars(for:).md)
- [calendar(withIdentifier:)](eventkit/ekeventstore/calendar(withidentifier:).md)
- [saveCalendar(_:commit:)](eventkit/ekeventstore/savecalendar(_:commit:).md)
- [removeCalendar(_:commit:)](eventkit/ekeventstore/removecalendar(_:commit:).md)
- [calendars](eventkit/ekeventstore/calendars.md)

### Accessing calendar events

- [event(withIdentifier:)](eventkit/ekeventstore/event(withidentifier:).md)
- [calendarItem(withIdentifier:)](eventkit/ekeventstore/calendaritem(withidentifier:).md)
- [calendarItems(withExternalIdentifier:)](eventkit/ekeventstore/calendaritems(withexternalidentifier:).md)
- [remove(_:span:)](eventkit/ekeventstore/remove(_:span:).md)
- [remove(_:span:commit:)](eventkit/ekeventstore/remove(_:span:commit:).md)
- [remove(_:commit:)](eventkit/ekeventstore/remove(_:commit:).md)
- [save(_:span:)](eventkit/ekeventstore/save(_:span:).md)
- [save(_:span:commit:)](eventkit/ekeventstore/save(_:span:commit:).md)
- [save(_:commit:)](eventkit/ekeventstore/save(_:commit:).md)

### Searching calendars

- [enumerateEvents(matching:using:)](eventkit/ekeventstore/enumerateevents(matching:using:).md)
- [events(matching:)](eventkit/ekeventstore/events(matching:).md)
- [fetchReminders(matching:completion:)](eventkit/ekeventstore/fetchreminders(matching:completion:).md)
- [cancelFetchRequest(_:)](eventkit/ekeventstore/cancelfetchrequest(_:).md)
- [predicateForEvents(withStart:end:calendars:)](eventkit/ekeventstore/predicateforevents(withstart:end:calendars:).md)
- [predicateForReminders(in:)](eventkit/ekeventstore/predicateforreminders(in:).md)
- [predicateForCompletedReminders(withCompletionDateStarting:ending:calendars:)](eventkit/ekeventstore/predicateforcompletedreminders(withcompletiondatestarting:ending:calendars:).md)
- [predicateForIncompleteReminders(withDueDateStarting:ending:calendars:)](eventkit/ekeventstore/predicateforincompletereminders(withduedatestarting:ending:calendars:).md)
- [EKEventSearchCallback](eventkit/ekeventsearchcallback.md)

### Deprecated methods

- [requestAccess(to:completion:)](eventkit/ekeventstore/requestaccess(to:completion:).md)

### Structures

- [EKEventStore.EventStoreChanged](eventkit/ekeventstore/eventstorechanged.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Essentials

- [Accessing the event store](eventkit/accessing-the-event-store.md)
- [Accessing Calendar using EventKit and EventKitUI](eventkit/accessing-calendar-using-eventkit-and-eventkitui.md)
