В моем приложении есть переключатель, который позволяет пользователю добавлять определенные события в свою повестку дня. Я обращаюсь с этим так:
@IBAction func putInAgenda(_ sender: UISwitch) {
let store = manager.store
if (sender.isOn){
store.requestAccess(to: EKEntityType.event, completion: {
(accessGranted: Bool, error: Error?) in
if accessGranted == true {
self.eventsHandler.importEventsInAgenda(id)
} else {
DispatchQueue.main.async {
sender.isOn = false
}
}
})
} else {
//
}
shared?.set(sender.isOn, forKey: "putInAgenda")
shared?.synchronize()
}
Однако, вопреки моим ожиданиям, «store.requestAccess» не только запрашивает, но и SETS.
В результате, когда пользователь ОТМЕНАЕТ диалоговое окно, переключатель переключается обратно (ожидаемый), но любая последовательная попытка переключить переключатель в положение ВКЛЮЧЕНА считается положением ВЫКЛ, без нового диалога.
Что мне делать?