swiftekeventekeventstore

How to add an event in the device calendar using swift?


I would be interested in knowing how to add a calendar event in the device, but using swift. I know there are some examples made in Objective-C, but at the moment nothing in swift. Many thanks.


Solution

  • Note: If your app is crashing with This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data., you'll need to add NSCalendarsUsageDescription to your info.plist. Can follow the example here.

    Swift 5.0 Version

    import Foundation
    import EventKit
    
    let eventStore : EKEventStore = EKEventStore()
          
    // 'EKEntityTypeReminder' or 'EKEntityTypeEvent'
    
    eventStore.requestAccess(to: .event) { (granted, error) in
      
      if (granted) && (error == nil) {
          print("granted \(granted)")
          print("error \(error)")
          
          let event:EKEvent = EKEvent(eventStore: eventStore)
          
          event.title = "Test Title"
          event.startDate = Date()
          event.endDate = Date()
          event.notes = "This is a note"
          event.calendar = eventStore.defaultCalendarForNewEvents
          do {
              try eventStore.save(event, span: .thisEvent)
          } catch let error as NSError {
              print("failed to save event with error : \(error)")
          }
          print("Saved Event")
      }
      else{
      
          print("failed to save event with error : \(error) or access not granted")
      }
    }   
    

    Reference : https://gist.github.com/mchirico/d072c4e38bda61040f91