【问题标题】:How to keep track of events added by my app in iphone calender如何跟踪我的应用在 iphone 日历中添加的事件
【发布时间】:2012-06-08 12:02:52
【问题描述】:

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

如果用户想要将该事件推送到本机日历,我将在本机中保存该事件,但我如何知道该事件是否已存在于本机日历中,因为我无法设置 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 也不起作用。

我怎样才能实现所需的功能,有什么建议吗?

【问题讨论】:

    标签: ios nscalendar ekevent ekeventkit


    【解决方案1】:

    我正在研究 EKEvent 是否有类似的东西,但 EKEvent 确实有一个您可以访问的标识符。

    保存事件后,您可以访问其标识符,

    NSString *eventID = [NSString stringWithFormat:@"%@", event.eventIdentifier];
    

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

    【讨论】:

    • 我已经知道,当我发布这个问题时.. 通过保留所有 eventIdentifiers,您将知道保存在本机日历中的所有事件,但如果用户从设备中删除应用程序并且如果他再次安装应用程序,您将不知道本地日历中存在哪些事件
    • 非常感谢。你给了我一个线索。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多