iPhone日历EKEvent

时间:2012-07-18 17:25:15

标签: iphone ios xcode calendar ekevent

我目前正在尝试创建一个iPhone日历应用。为了确保它与现有的iPhone日历同步,我使用的是EKEvent工具包。

但是,我将要存储的事件将具有比EKEvent允许的事件更多的属性 - 例如,我的事件不仅具有标题,细节和其他少数允许的类别;他们也会有主题,优先事项......

因此,当我每次启动日历时加载EKEventStore时,此信息将不会包含在已加载的EKEvents中。

如何将此信息与现有EKEvents相关联,以便每次加载日历时,还会加载这些附加属性?

我会使用eventIdentifier,但iPhone文档说“如果事件的日历发生变化,其标识符很可能也会发生变化。”如果我正确地阅读此内容,这意味着我无法始终使用eventIdentifier来识别事件..

1 个答案:

答案 0 :(得分:0)

我会使用notes属性并设置一个可以在以后解析的字符串。 由于EKCalendarItem是EKEvent的超类,EKEvent的一些属性继承自EKCalendarItem。 (documentation here

但是,即使笔记不再是EKEvent的属性,您仍然可以在EKEvent上“设置”笔记。 (去图)

因此,根据您的问题,我可能会为您的每个附加(自定义)属性设置一个整数,例如..

在创建事件的视图控制器代码中: - 为每个自定义选项设置一个整数。 (优先权,主题等)

int priority = 0;

    EKEvent *newEvent = [EKEvent eventWithEventStore:yourEventStore];

    [newEvent setCalendar:yourCalendar];

    if (priority == 0) {
        newEvent.notes = @"0"
    }

    newEvent.title = @"YourTitle";
    newEvent.startDate = yourStartDate;
    newEvent.endDate = yourEndDate;

    [youreventStore saveEvent:newEvent span:EKSpanThisEvent commit:YES error:nil];

然后,如果要检查/转换自定义属性,只需在使用characterAtIndex获取事件时检查事件的注释,或者从注释中创建一个子字符串并将其与另一个字符串进行比较。