Ошибка при создании напоминания с помощью EventKit

У меня есть приложение, которое использует EventKit. Я запрашиваю разрешение на напоминания, а затем у меня есть код, который создает напоминание. Иногда я получаю это сообщение об ошибке в своих журналах при запуске приложения в симуляторе:

Error getting changed object IDs since timestamp 450512391.766620 from daemon: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)" Error getting default calendar for new reminders: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)"

Первая ошибка возникает на этапе авторизации, а вторая — в следующих строках:

EKReminder *reminder = [EKReminder reminderWithEventStore:eventStore]; reminder.calendar = eventStore.defaultCalendarForNewReminders;

Это происходит после того, как requestAccessToEntityType:completion: возвращает предоставленное разрешение на напоминания, поэтому разрешение определенно есть.

Странно то, что когда проблема возникает, если я просто перезапускаю приложение, все в порядке. Если я перезагружу симулятор и перезапущу приложение, это только иногда будет происходить снова.


person Liron Yahdav    schedule 12.04.2015    source источник


Ответы (1)


Кажется, это происходит только со следующим рабочим процессом:

  • Сбросить все контакты и пункт меню настроек.
  • Сразу же выйдите из симулятора, когда он вернется.
  • Запустите свое приложение, которое немедленно запрашивает информацию календаря на только что сброшенном, никогда ранее не открывавшемся симуляторе.

Я подозреваю, что причина в том, что когда вы сбрасываете весь симулятор, ему требуется несколько секунд для инициализации всех демонстрационных данных, таких как контакты и события календаря, когда он «загружается» в первый раз.

Если вы подождете 10+ секунд после сброса, а ЗАТЕМ запустите свое приложение, вы не получите это предупреждение.

Другой обходной путь — использовать «Сброс настроек конфиденциальности» в приложении «Настройки симулятора iOS» («Общие»> «Сброс») во время тестирования проверки разрешений календаря.

person Andrew    schedule 13.06.2015