Наблюдение внешних изменений в календарной базе данных
В то время как Ваше приложение работает, для другого процесса или приложения возможно изменить базу данных Calendar. Если Ваше приложение выбирает календарные события или напоминания, необходимо зарегистрироваться, чтобы быть уведомленными об изменениях в базе данных Calendar. Путем выполнения так, Вы гарантируете, что информация о календаре и напоминании, которая Вы выводите на экран пользователю, является текущей.
Регистрация для уведомлений
EKEventStore
возразите отправляет EKEventStoreChangedNotification
уведомление каждый раз, когда это обнаруживает изменения в базе данных Calendar. Регистр для этого уведомления, если Ваше приложение обрабатывает данные напоминания или событие.
Следующие кодовые регистры для EKEventStoreChangedNotification
уведомление, как показано в Перечислении 5-1.
Перечисление 5-1 EKEventStoreChangedNotification
уведомление
[[NSNotificationCenter defaultCenter] addObserver:self |
selector:@selector(storeChanged:) |
name:EKEventStoreChangedNotification |
object:eventStore]; |
Ответ на уведомления
Когда Вы получаете EKEventStoreChangedNotification
уведомление, возможно, что возражает, что Вы выбрали — такой как EKEvent
, EKReminder
, или EKCalendar
, среди других — изменились. Эффект этих изменений зависит от того, было ли событие добавлено, изменено или удалено.
Если событие было добавлено, оно не влияет ни на одно из Ваших ранее выбранных событий или напоминаний, но добавленное событие может находиться в пределах диапазона дат событий, которые Вы выводите на экран пользователю.
Если событие было изменено или удалено, свойства
EKEvent
иEKReminder
объекты, представляющие то событие, могут стать устаревшими.
Поскольку Ваши локальные данные часто лишаются законной силы или неполные, когда изменение происходит в базе данных Calendar, необходимо повторно выбрать диапазон текущей даты событий каждый раз, когда Вы получаете EKEventStoreChangedNotification
уведомление. Если Вы в настоящее время изменяете событие, и Вы не хотите повторно выбирать его, если это не абсолютно необходимо для этого, что можно вызвать refresh
метод на событии. Если возвращается метод YES
, можно продолжать использовать событие; иначе, необходимо повторно выбрать его.