Чтение и запись напоминаний
Напоминания являются задачами, которые могут быть связаны к определенному времени или расположению. Они подобны календарным событиям, но могут быть отмечены завершенные и могут не обязательно охватить точный промежуток времени.
Поскольку EKReminder наследовался от EKCalendarItem, можно выполнить те же методы на напоминании, как Вы были бы на событии, таком как добавление предупреждения с addAlarm: или устанавливание правила повторения с addRecurrenceRule:.
Получение напоминаний
Как с событиями, необходимо сначала установить соединение с хранилищем события для доступа к существующим напоминаниям. Посмотрите Соединение с Хранилищем События, если Вы уже не сделали так.
Инициализировать соединение с доступом к напоминаниям на OS X, передаче EKEntityMaskReminder вместо EKEntityMaskEvent.
EKEventStore *store = [[EKEventStore alloc] initWithAccessToEntityTypes:EKEntityMaskReminder]; |
На iOS 6 и позже, необходимо запросить доступ для использования базы данных Calendar пользователя с requestAccessToEntityType:completion: метод после хранилища события инициализируется. Запрашивать доступ к типу объекта асинхронно предлагает пользователю позволять или отклонять Ваше приложение от использования их информации календаря. Необходимо обработать случаи для того, когда пользователь предоставляет и запрещает доступа к приложению:
[store requestAccessToEntityType:EKEntityTypeReminder completion:^(BOOL granted, NSError *error) { |
// handle access here |
}]; |
Вы не должны запрашивать доступ для напоминаний пользователя на OS X, потому что автоматически предоставляется доступ.
Точно так же, как поиск событий существует два способа получить напоминания.
Используя предикаты
Можно вызвать fetchRemindersMatchingPredicate:completion: получить доступ к многократным напоминаниям, соответствующим предикат. Передайте предикат, возвращенный одним из следующих методов:
predicateForIncompleteRemindersWithDueDateStarting:ending:calendars:находит неполные напоминания в дополнительном периоде времениpredicateForCompletedRemindersWithCompletionDateStarting:ending:calendars:находит завершенные напоминания в дополнительном периоде времениpredicateForRemindersInCalendars:находит все напоминания
Можно выполнить итерации через соответствующие напоминания путем передачи блока параметру завершения, как показано в Перечислении 2-1.
Перечисление 2-1 Выбирающие напоминания с предикатом
NSPredicate *predicate = [store predicateForRemindersInCalendars:nil]; |
[store fetchRemindersMatchingPredicate:predicate completion:^(NSArray *reminders) { |
for (EKReminder *reminder in reminders) { |
// do something for each reminder |
} |
}]; |
Используя уникальные идентификаторы
Если Вы знаете уникальный идентификатор определенного напоминания от предыдущей выборки его с предикатом, можно вызвать calendarItemWithIdentifier: метод экземпляра. calendarItemWithIdentifier: может выбрать любой объект календаря (напоминания и события), тогда как eventWithIdentifier: выборки только события.
Создание и редактирование напоминаний
Можно создать напоминания с помощью reminderWithEventStore: метод класса. title и calendar свойства требуются. Календарь для напоминания является списком, с которым он сгруппирован.
Как события, напоминания могут инициировать основанные на времени или основанные на местоположении предупреждения для предупреждения пользователя определенной задачи. Считайте Предупреждения Конфигурирования для получения дополнительной информации о том, как присоединить предупреждения к объектам календаря.
Для соединения даты начала или даты оплаты с напоминанием используйте startDateComponents и dueDateComponents свойства. Для завершения напоминания установите completed свойство к YES, который автоматически устанавливает completionDate к текущей дате.
Сохранение и удаление напоминаний
Напоминания сохраняются подобным способом к событиям. Для сохранения напоминания к базе данных Calendar вызовите saveReminder:commit:error: метод. Для удаления события вызовите removeReminder:commit:error: метод.
Помните, title и calendar свойства должны явно быть установлены перед сохранением напоминания.