I'm trying to create a very simple command line app that shows all my reminders in the command line but I'm simply not getting any reminders shown (yes I do have some).
import Foundation
import EventKit
let eventStore: EKEventStore = EKEventStore()
let defaultList: EKCalendar?
var hasAccess: Bool = false
var reminders: [EKReminder]?
eventStore.requestAccess(to: EKEntityType.reminder, completion: {(granted, error) in
hasAccess = granted ? true : false
})
print("Has access: \(hasAccess)")
defaultList = eventStore.defaultCalendarForNewReminders()
print("Default List: \(defaultList?.title ?? "NONE")")
let lists = eventStore.calendars(for: .reminder)
print(lists.map {$0.title})
eventStore.fetchReminders(matching: eventStore.predicateForReminders(in: nil)) { (_ rems: [EKReminder]?) -> Void in
print(rems)
reminders = rems
}
print(reminders)
As you can see, this is very simply. I get my hasAccess
successfully and my defaultList
and my lists
but not my reminders
.
I think this is because the fetchReminders
function takes a completion and so this is something to do with threads or callbacks or something but the requestAccess
function also has a completion but that works.
Please help!