1

我正在尝试通过新的 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

帮助将不胜感激。

4

1 回答 1

0

根据文档,这种行为符合预期,链接

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

于 2013-08-12T18:39:03.383 回答