Идентификатор EKEvent изменяется при выборе другого календаря - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть приложение для планирования собраний, которое имеет свою собственную базу данных sqlite и присоединяет ее к EKEvent из каркаса календаря. Я использую идентификатор события в качестве внешнего ключа для данных моей встречи. Проблема заключается в том, что пользователь изменяет календарь событий в приложении календаря. Идентификатор изменился, и я не смог узнать, изменился ли он, поскольку он был создан вне моего приложения. Пожалуйста, дайте мне знать, если у кого-нибудь есть идеи

Ответы [ 3 ]

1 голос
/ 24 апреля 2012

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

Еще одна проблема: все экземпляры повторяющегося события имеют одинаковый идентификатор; -[EKEventStore eventWithIdentifier:] похоже возвращает первый экземпляр. (Я даже видел события с нулевым идентификатором; я не могу вспомнить, какова точная причина.)

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

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

1 голос
/ 24 апреля 2012

с iOS 5.0 нет способа однозначно идентифицировать событие с уверенностью

0 голосов
/ 04 декабря 2013

Я сталкиваюсь с этой проблемой прямо сейчас, пытаясь сохранить синхронизированный EventStore с внутренней базой данных в моем приложении. Мое решение состоит в том, чтобы сделать сопоставление между EKEvents и событиями внутри приложения, если я обнаружил, что это нормально, но все события, которые не совпадают с EKEvents, будут удалены, и все EKEvents без совпадения будут добавлены, при этом также будут изменены только что измененные EKEvents во время синхронизации.

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