我目前正在尝试创建一个iPhone日历应用。为了确保它与现有的iPhone日历同步,我使用的是EKEvent
工具包。
但是,我将要存储的事件将具有比EKEvent
允许的事件更多的属性 - 例如,我的事件不仅具有标题,细节和其他少数允许的类别;他们也会有主题,优先事项......
因此,当我每次启动日历时加载EKEventStore
时,此信息将不会包含在已加载的EKEvents
中。
如何将此信息与现有EKEvents
相关联,以便每次加载日历时,还会加载这些附加属性?
我会使用eventIdentifier
,但iPhone文档说“如果事件的日历发生变化,其标识符很可能也会发生变化。”如果我正确地阅读此内容,这意味着我无法始终使用eventIdentifier
来识别事件..
答案 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
获取事件时检查事件的注释,或者从注释中创建一个子字符串并将其与另一个字符串进行比较。