Я годами использую EventKit в своем приложении (начиная с macOS 10.10), но у него странная проблема в Мохаве.
Ранее, когда я получил EKEventStoreChangedNotification, я мог запросить измененные напоминания следующим образом:
NSPredicate *predicate = [self.eventStore predicateForRemindersInCalendars:@[self.taskCalendar]];
[self.eventStore fetchRemindersMatchingPredicate:predicate completion:^(NSArray *reminders) {
self.allFetchedTasks = reminders;
}];
Работал как чемпион. Установив точку останова в этом блоке, я мог бы переключиться на Напоминания, изменить заголовок задачи, мгновенно вернуться обратно в отладчик, и массив напоминаний изменился бы (через «po [Remders.firstObject title]»).
Тем не менее, теперь в Мохаве, по-видимому, выборка возвращает старую информацию. Я возвращаюсь в отладчик, как только я изменяю название задачи в напоминаниях, но массив напоминаний все еще содержит старую информацию. Таким образом, [remders.firstObject title] по-прежнему показывает исходный заголовок, а не заголовок, как он существует в настоящее время в напоминаниях. Я могу продолжать изменять заголовок в напоминаниях, и каждый раз, когда меня возвращают в отладчик, я все еще вижу исходное название.
Я также попытался использовать calendarItemsWithExternalIdentifier, но он также возвращает исходное значение.
Если я перезапускаю свое приложение, оно получает последнюю информацию, но, опять же, последующие выборки из-за уведомлений об изменениях возвращают исходное значение.
Не похоже, что EventKit Mojave имеет какое-либо новое кэширование, которым я могу управлять. Что-то еще мне не хватает? Нужно ли мне каждый раз восстанавливать свой self.eventStore?