iOS - можно ли использовать библиотеку EventKit, но не сохранять данные в базу данных (по крайней мере, не отображать ни в одном приложении календаря)

У меня есть массив записей данных о событиях, загруженных с сервера. И я думаю, что это может быть удобно, если я смогу использовать библиотеку EventKit для обработки таких вещей, как повторение событий. Но я не хочу, чтобы мои события были глобальными событиями (это, вероятно, означает сохранение в базе данных календаря), которые будут отображаться во всех приложениях календаря. Вместо этого я просто хочу, чтобы мои события были доступны только внутри моего приложения.

Это достижимо?

Заранее спасибо!


person JohnnL    schedule 15.09.2016    source источник


Ответы (1)


Я бы реализовал протокол NSCoder на EKEvent, что позволит вам сохранить ваш массив при завершении работы приложения и восстановить его при загрузке. Уже есть различные проекты github, которые сделают это за вас (например, https://github.com/yep/DeviceSync-for-iOS/blob/master/DeviceSync/Categories/EKEvent%2BNSCoder.h).

Альтернативой является использование основных данных, но вам придется позаботиться о сопоставлении всех свойств EKEvent с объектами и атрибутами базы данных самостоятельно.

person norders    schedule 15.09.2016
comment
Спасибо norders, смогу ли я получить все EKEvents из магазина событий. например будет ли работать следующий код? NSArray *events = [self.eventStore eventsMatchingPredicate:predicate]; - person JohnnL; 15.09.2016
comment
Это вернет текущие события календаря пользователя, так что да. Пользователя спросят, хотят ли они разрешить доступ к вашему приложению или нет. Если вы хотите запускать предикаты для собственного внутреннего массива событий, используйте [myEventArray filteredArrayUsingPredicate:]. Просто упомянем, что ваш внутренний массив событий на самом деле не будет иметь никаких функций календаря (например, напоминания, синхронизация и т. д.). Вам придется разобраться с этим самостоятельно. - person norders; 16.09.2016
comment
Я думаю, что я мог бы не объяснить это хорошо. Я не хочу прикреплять дополнительные данные к EKEvents, вместо этого я хочу создавать и использовать их как обычные EKEvents с одним исключением, которое не сохраняется в базе данных, поэтому оно доступно только внутри моего приложения, и пользователь не увидит его в все в приложении Календарь. - person JohnnL; 22.09.2016