使用calendarItemWithIdentifier查找日历事件

时间:2013-01-13 09:46:20

标签: ios6 xcode4.5 eventkit

我正在尝试通过新的iOS方法calendarItemWithIdentifier查找日历事件。我无法使用eventWithIdentifier,因为在事件与服务器同步后标识符已更改。 calendarItemIdentifier不是。

但calendarItemWithIdentifier总是返回(null)。

    EKEventStore *store = [[EKEventStore alloc] init];

[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
    if (granted) {

        // Create event.
        EKEvent *event = [EKEvent eventWithEventStore:store];
        event.title = self.title;
        event.startDate = [[NSDate date] dateByAddingTimeInterval:3600];
        event.endDate = [[NSDate date] dateByAddingTimeInterval:7200];
        event.timeZone = [NSTimeZone defaultTimeZone];
        event.calendar = [store defaultCalendarForNewEvents];

        BOOL success = [store saveEvent:event span:EKSpanThisEvent commit:YES error:&error];
        if (success)
        {
            NSString *calendarItemIdentifier = event.calendarItemIdentifier;
            NSLog(@"Assigned identifier: %@", calendarItemIdentifier);

            // Look up the event in the calendar.
            event = (EKEvent *)[store calendarItemWithIdentifier:calendarItemIdentifier];
            if (event) {
                NSLog(@"FOUND");
            } else {
                NSLog(@"NOT FOUND");
            }
        }
    }

}];

来自日志:

2013-01-13 10:32:52.042 CalendarIntegration[6095:1303] Assigned identifier: C5FD3792-EBF1-4766-B27D-2767E5C8F3BE
2013-01-13 10:32:52.043 CalendarIntegration[6095:1303] NOT FOUND

帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据文档,此行为符合预期,link

  

与日历的完全同步将丢失此标识符。您应该有一个计划,通过缓存其他属性来处理标识符不再可读的日历。