Сохранение событий из календаря пользователя - PullRequest
3 голосов
/ 28 апреля 2011

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

Для неповторяющихся событий я могу просто сохранитьeventIdentifier и извлекает событие из хранилища событий, когда мне это нужно.

Но повторяющиеся события имеют один и тот же идентификатор события.Когда я возвращаюсь в хранилище событий для извлечения события (на основе eventIdentifier), я получаю самое первое событие в цепочке повторений ... а не N-е повторение события, которое выбрал пользователь.

Iне удается сохранить выбранные пользователем события путем архивации всего объекта EKEvent, поскольку EventKit не поддерживает NSCoding.

Я рассматриваю возможность хранения дат eventIdentifier и Start & End, чтобы можно было извлечь правильное событие изМагазин событий ... но это выглядит довольно глупо и может внести изменения в отслеживание изменений, которые пользователь вносит в свой календарь между запусками моего приложения.

Есть какие-нибудь мысли или предложения?

1 Ответ

1 голос
/ 29 апреля 2011

Одного идентификатора события недостаточно даже для неповторяющихся событий. Действительно, это может измениться, когда пользователь перемещает событие в другой календарь. Для повторяющихся событий он может измениться после отсоединения вхождения или разделения повторения. Поэтому обычной практикой является поиск событий с использованием подмножества информации (например, заголовка, даты начала и срока выполнения). Вы не должны полагаться на идентификаторы событий.

К сожалению, фреймворк не предоставляет нам необработанные данные о событии, он просто предоставляет все вхождения событий за указанный интервал. Таким образом, не существует такой вещи (с использованием платформы), как возможность извлечения одного повторяющегося события и последующего расширения его повторяемости для получения его n -го вхождения: вам нужно вручную постобработать извлеченные события чтобы найти те, которые вас интересуют.

Проблема в том, что предоставленные API не предназначены для синхронизации. Многие разработчики жаловались и до сих пор жалуются на это, отправляя запрос об ошибке / функции с помощью Radar. До сих пор Apple отвечает, что API выполняют другую цель, поскольку синхронизация выполняется автоматически. Однако это верно при синхронизации через iTunes, но не программно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...