Error getting Default Calendar for new events - Swift
I am having a problem trying to create a new event in my iOS Calendar app while using Swift.
This is what I have so far:
func addToCal(){
let eventStore = EKEventStore()
eventStore.requestAccessToEntityType(EKEntityTypeReminder) {
(granted: Bool, err: NSError!) in
if granted && !err {
var event:EKEvent = EKEvent(eventStore: eventStore)
event.title = self.eventTitle!.text
event.startDate = self.eventData.startDateObj
event.endDate = self.eventData.endDateObj
event.calendar = eventStore.defaultCalendarForNewEvents
eventStore.saveEvent(event, span: EKSpanThisEvent, error: nil)
println("Saved Event")
}
}
This is the error I am getting:
Error getting default calendar for new events: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)"
I have checked my syntax and I am sure everything is correct, so can anyone help me figure out where I am going wrong?
Additional Information
- iOS 8 Beta 5
- Xcode 6 Beta 5
- Problem occurs on iPad Mini w / Retina Display (real device)
Update
Changing EKEntityTypeReminder
to EKEntityTypeEvent
(Sorry, my mistake) doesn't actually throw an error, but now the event doesn't even appear in the calendar. I have checked the outputs granted
and err
, and I can see false
and nil
respectively.
source to share
I think your main problem was that you were not committing a new event to save. The following code is what I am using, and the main difference is that my code includes a commit and allows my error to be changed from "nil" if any. The conditional at the end just prints any save error messages or saves progress in the debug area.
let eventStore = EKEventStore()
let event = EKEvent(eventStore: eventStore)
event.title = "Your Event Title Here" // Sets event title
event.startDate = NSDate() // Sets event start date
event.endDate = event.startDate.dateByAddingTimeInterval(20000) // Sets event end date
event.calendar = eventStore.defaultCalendarForNewEvents // Selects default calendar
var saveError : NSError? = nil // Initially sets errors to nil
eventStore.saveEvent(event, span: EKSpanThisEvent, commit: true, error: &saveError) // Commits changes and allows saveEvent to change error from nil
//// Following checks for errors and prints result to Debug Area ////
if saveError != nil {
println("Saving event to Calendar failed with error: \(saveError!)")
} else {
println("Successfully saved '\(event.title)' to '\(event.calendar.title)' calendar.")
}
Hope this helps!
-Gorowski
source to share