对于斯威夫特 3
我发现,问题在于我在检索日期的函数中创建了商店。
在函数之外创建商店并使用它的实例解决了这个问题。
class CalendarServices: NSObject {
var store = EKEventStore()
func fetchEventKitCalendarEvents(date: Date, completion: @escaping (_ events: [EKEvent]?, _ error: Error?)->()) {
let calendar = Calendar.current
guard self.getEventKitAuthorizationStatus() == .authorized else {
completion(nil, CoreServices.setError(message: "AuthorizationStatus != authorized"))
return
}
guard let endDate = calendar.date(byAdding: .day, value: 1, to: date) else {
completion(nil, CoreServices.setError(message: "Error creating endDate"))
return
}
CoreServices.background {
let predicate = self.store.predicateForEvents(withStart: date, end: endDate, calendars: self.fetchEventKitCalendars())
let events = self.store.events(matching: predicate).sorted() {
(e1: EKEvent, e2: EKEvent) -> Bool in
return e1.startDate.compare(e2.startDate) == .orderedAscending
}
CoreServices.async {
completion(events, nil)
}
}
}
}