Не удается удалить EKCalendar, появляется ошибка домена =EKErrorDomain Code=72

Я хочу удалить EKCalendar. Это отлично работает на устройствах iOS и симуляторах, однако попытаться заставить это работать на Catalina проблематично. Что бы я ни пытался, я получаю следующее:

Error Domain=EKErrorDomain Code=72 "Невозможно удалить календарь, если в результате в учетной записи не останется календарей, которые могут быть календарем планирования по умолчанию". UserInfo={NSLocalizedDescription= Невозможно удалить календарь, если это приведет к тому, что в аккаунте не останется календарей, которые могут быть календарем планирования по умолчанию.}

Есть указатели? Я гнался за этим неделями! Спасибо!

Мне предоставлено разрешение на использование календарей и напоминаний:

import UIKit
import EventKit

class ViewController: UIViewController {

    let eventStore = EKEventStore()

    func deleteCal (eventStoreToUse: EKEventStore) {
        let calsArray = eventStoreToUse.calendars(for: .event)
        for cals in calsArray {
            print (cals.title)
            if cals.title == "Gaps2" || cals.title == "Done" {
                do { try _ = eventStoreToUse.removeCalendar(cals, commit: true)
                } catch {
                    print ("Error \(error)")
                }
            } else {
                print ("Did not delete \(cals.title)")
            }
        }
    }

    func askAccess() {
        switch EKEventStore.authorizationStatus(for: .event) {
        case .authorized:
            print ("Calendars Access Granted")
        case .denied:
            print("Access denied")
        case .notDetermined:
            eventStore.requestAccess(to: .event, completion:
                {[weak self] (granted: Bool, error: Error?) -> Void in
                    if granted {
                        print("Granted")
                        self?.deleteCal(eventStoreToUse: (self?.eventStore)!)
                    } else {
                        print("Access denied")
                    }
            })
        default:
            print("Case default")
        }

        switch EKEventStore.authorizationStatus(for: .reminder) {
         case .authorized:
            print ("Reminders Access Granted")
         case .denied:
             print("Access denied")
         case .notDetermined:
             eventStore.requestAccess(to: .event, completion:
                 {[weak self] (granted: Bool, error: Error?) -> Void in
                     if granted {
                         print("Granted")
                         self?.deleteCal(eventStoreToUse: (self?.eventStore)!)
                     } else {
                         print("Access denied")
                     }
             })
         default:
             print("Case default")
         }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        askAccess()
        deleteCal(eventStoreToUse: eventStore)
    }
}

0 ответов

Другие вопросы по тегам