Как я могу отметить EKEvent как завершенное?
Как я могу позволить пользователю пометить EKEvent как завершенное? В настоящее время я выбираю события для даты и показываю ее в UITableView.
// Fetching events happening in the next 24 hours with a predicate, limiting to the default calendar
- (NSArray *)fetchEventsForDate:(NSDate*)startDate
{
[self.eventsList removeAllObjects];
// endDate is 1 day = 60*60*24 seconds = 86400 seconds from startDate
NSDate *endDate = [startDate dateByAddingTimeInterval:86400];
NSMutableDictionary *eventsDict = [NSMutableDictionary dictionaryWithCapacity:1024];
NSDate* currentStart = [NSDate dateWithTimeInterval:0 sinceDate:startDate];
// int seconds_in_year = 60*60*24*365;
int seconds_in_day = 60*60*24;
// enumerate events by one year segment because iOS do not support predicate longer than 4 year !
//while ([currentStart compare:endDate] == NSOrderedAscending) {
NSDate* currentFinish = [NSDate dateWithTimeInterval:seconds_in_day sinceDate:currentStart];
if ([currentFinish compare:endDate] == NSOrderedDescending) {
currentFinish = [NSDate dateWithTimeInterval:0 sinceDate:endDate];
}
NSPredicate *predicate = [eventStore predicateForEventsWithStartDate:currentStart endDate:currentFinish calendars:nil];
[eventStore enumerateEventsMatchingPredicate:predicate
usingBlock:^(EKEvent *event, BOOL *stop) {
if (event) {
[eventsDict setObject:event forKey:event.eventIdentifier];
}
}];
NSArray *events = [eventsDict allValues];
return events;
}
Я хочу, чтобы пользователь коснулся ячейки события, чтобы отметить ее как завершенную.
Что можно изменить (любой тег или bool), чтобы обновить и сохранить это EKEvent, чтобы в будущем показывать его как завершенное событие?
[self.eventStore saveEvent: myUpatedEvent span:EKSpanThisEvent error:&error];
Я исследовал
event.status, event.refresh, event.organizer, event.availability, etc.
но никто не был полезен.
Я старался EKEventAvailability
как
[event setAvailability:EKEventAvailabilityUnavailable];
NSError *error = nil;
NSLog(@"Event Availbility:%d",event.availability); // It always returned -1;
[self.eventStore saveEvent:event span:EKSpanThisEvent error:&error];
if (error) {
NSLog(@"Save Event errorDiscription:%@",error.description);
}
но он не обновлялся и не возвращал -1 (EKEventAvailabilityNotSupported
) и обновление.
Пожалуйста, предложите!
Спасибо!
1 ответ
Вы можете изменить availability
прослушанного события как EKEventAvailabilityUnavailable
, Если событие завершено, по логике оно недоступно, не так ли?
But if the event’s calendar does not support availability settings,
this property’s value is `EKEventAvailabilityNotSupported.`
РЕДАКТИРОВАТЬ:
Мы можем поочередно, использовать eventIdentifier
собственность EKEvent.
Это уникальный идентификатор события. (только для чтения) Мы можем хранить его локально или в CoreData, когда пользователь нажимает на событие и использовать для будущих целей.