Используйте 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 ответ
Согласно документу, это поведение, как и ожидалось, ссылка,
Полная синхронизация с календарем приведет к потере этого идентификатора. У вас должен быть план работы с календарем, идентификатор которого больше не может быть получен путем кэширования его других свойств.