Используйте calendarItemWithIdentifier для поиска события календаря

Я пытаюсь найти событие календаря с помощью нового метода 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 ответ

Согласно документу, это поведение, как и ожидалось, ссылка,

Полная синхронизация с календарем приведет к потере этого идентификатора. У вас должен быть план работы с календарем, идентификатор которого больше не может быть получен путем кэширования его других свойств.

Другие вопросы по тегам