如何在iPhone日历中跟踪我的应用程序添加的事件

3

我在我的应用程序中从Web服务获取事件,每个事件都有一个唯一标识符。

如果用户想要将该事件推送到本地日历中,我将保存该事件到本地,但是我如何知道该事件是否已经存在于本地日历中,因为我不能设置EKEvent对象的eventIdentifier属性。

我尝试了子类化EKEvent并添加自己的标识符。

eventStore = [[EKEventStore alloc] init];
MyEvent *event = [MyEvent eventWithEventStore:eventStore];
event.myEventIdentifier = @"MyEventIdentifier";
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
event.startDate = [NSDate date];
event.endDate = [NSDate dateWithTimeIntervalSinceNow:10000];
event.title = @"MyEventTitle";
[eventStore saveEvent:event span:EKSpanThisEvent error:nil];

但是当我检索事件对象时,我没有得到我的子类对象,并且在调用时会抛出一个异常

[event valueForKey:@"MyEventIdentifier"];

现在你可以看到,我无法在EKEvent类中设置eventIdentifier属性,而且继承EKEvent也不起作用。
我该如何实现所需的功能?有什么建议吗?
1个回答

3
我正在研究EKEvent,希望能找到类似的内容。不过,EKEvent确实有一个可以访问的标识符(identifier)。
一旦你保存事件,就可以访问其标识符。
NSString *eventID = [NSString stringWithFormat:@"%@", event.eventIdentifier];

保存此字符串并使用它来删除事件,但请注意event.eventIdentifier是只读的。


1
我在发布这个问题时就已经知道了...你可以通过保留所有的eventIdentifiers来知道本地日历中保存的所有事件,但是如果用户从设备中删除了应用程序,那么这些数据将会丢失。如果用户再次安装应用程序,你将不知道哪些事件存在于本地日历中。 - Yogesh Maheshwari
非常感谢您。您给了我一个线索。再次感谢。 - Abdul Yasin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接