Как предотвратить ошибку доступа к EventStore при первом запуске - PullRequest
0 голосов
/ 25 марта 2020

Приложение 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 установлено правильно, и приложение работает, как и ожидалось, рядом с этими сообщениями об ошибках.

В чем моя ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...