Приложение My Ma c, обращающееся к календарю пользователя, показывает ошибку доступа к разрешению при первом запуске, прежде чем запрашивать у пользователя разрешение на доступ к календарю. Сообщение не появляется при последующих запусках. Как я могу предотвратить это? Я использую следующий код:
class MyCalendar {
let store = EKEventStore()
init() {
func requestAccessToCalendar() {
store.requestAccess(to: .event, completion:
{(granted: Bool, error: Error?) -> Void in
})
}
func loadCalendars() {
calendars = store.calendars(for: .event)
}
let ekstatus = EKEventStore.authorizationStatus(for: EKEntityType.event)
switch (ekstatus) {
case EKAuthorizationStatus.notDetermined:
requestAccessToCalendar()
case EKAuthorizationStatus.authorized:
loadCalendars()
case EKAuthorizationStatus.restricted, EKAuthorizationStatus.denied:
dialogOK("access to Calendar denied")
@unknown default:
dialogOK("Unknown Calendar access problem")
}
}
}
Ошибка возникает перед выполнением любого оператора в init (). Я также попытался с ленивым переменным вместо константы для магазина - без успеха. Право plist установлено правильно, и приложение работает, как и ожидалось, рядом с этими сообщениями об ошибках.
В чем моя ошибка?