EventIdentifier, получающий при сохранении, не может получить событие с помощью eventIdentifier.
Таким образом, мы не можем программно обновить EKEvent, даже если у нас есть его eventIdentifier.
В [SimpleEKDemo][1], предоставленном Apple
зарегистрируйте eventIdentifier в методе EKEventEditViewDelegate
- (void)eventEditViewController:(EKEventEditViewController *)controller
didCompleteWithAction:(EKEventEditViewAction)action {
NSError *error = nil;
EKEvent *thisEvent = controller.event;
switch (action) {
case EKEventEditViewActionCanceled:
// Edit action canceled, do nothing.
break;
case EKEventEditViewActionSaved:
// When user hit "Done" button, save the newly created event to the event store,
// and reload table view.
// If the new event is being added to the default calendar, then update its
// eventsList.
if (self.defaultCalendar == thisEvent.calendar) {
[self.eventsList addObject:thisEvent];
}
[controller.eventStore saveEvent:controller.event span:EKSpanThisEvent error:&error];
NSLog(@"thisEvent.id = %@", thisEvent.eventIdentifier);
[self.tableView reloadData];
break;
case EKEventEditViewActionDeleted:
// When deleting an event, remove the event from the event store,
// and reload table view.
// If deleting an event from the currenly default calendar, then update its
// eventsList.
if (self.defaultCalendar == thisEvent.calendar) {
[self.eventsList removeObject:thisEvent];
}
[controller.eventStore removeEvent:thisEvent span:EKSpanThisEvent error:&error];
[self.tableView reloadData];
break;
default:
break;
}
// Dismiss the modal view controller
[controller dismissModalViewControllerAnimated:YES];
}
Запустите приложение на устройстве, мы получим идентификатор события, например:
eventidonsave = 3CB60848-6CCA-43BF-B2C6-9EB9F5CFBBB7:C6CDE9DAA864420BA9A2E02CD886369700000000000000000000000000000000000
Получить событие, используя идентификатор события при следующем запуске
EKEventStore *eventStore1 = [[EKEventStore alloc] init];
EKEvent *event1 = [eventStore1 eventWithIdentifier: eventidonsave ];
if(event1){
NSLog(@"event1 id = %@", event1.eventIdentifier);
}else{
NSLog(@"Not Found");
}
Мы получим «Не найдено».
зарегистрируйте идентификаторы событий вместо получения событий и снова запустите приложение
- (NSArray *)fetchEventsForToday {
....
....
for(EKEvent *eachEvent in events){
NSLog(@"eachEvent.id = %@", eachEvent.eventIdentifier);
}
}
Мы видим, что мы получаем другой Extentientifier как 3CB60848-6CACA-43BF-B2C6-9EB9F5CFBBB7: 040000008200E00074C5B7101A82E00800000000646C6F747573C3010000000000000000100000000C4880257958003F776C
это не то же самое, что "eventidonsave"
Всем привет, спасибо за прочтение. Это было решено. Приведенный выше код (не отредактированный) работает нормально. Я предполагаю, что проблема заключалась в том, что идентификатор события был зарегистрирован перед этой строкой «[controller.eventStore saveEvent:..»
NO только что переместился после сохранения. и вроде нормально.