Как я могу пометить 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;
}

Я хочу, чтобы пользователь коснулся ячейки события, чтобы отметить ее как завершенную.

Что можно изменить (любой тег или логическое значение), чтобы обновить и сохранить это событие 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) и обновлялся.

Пожалуйста, предложите!!

Спасибо!


person HDdeveloper    schedule 23.07.2013    source источник


Ответы (1)


Вы можете изменить availability события касания на EKEventAvailabilityUnavailable. Если событие завершено, логически оно недоступно, не так ли?

But if the event’s calendar does not support availability settings,
this property’s value is `EKEventAvailabilityNotSupported.`

EDIT:
Мы можем поочередно использовать свойство eventIdentifier EKEvent.

Это уникальный идентификатор события. (только для чтения) Мы можем хранить его локально или в CoreData, когда пользователь нажимает на событие, и использовать для будущих целей.

person Puneet Sharma    schedule 23.07.2013
comment
Я пробовал это, но он возвращал EKEventAvailabilityNotSupported и даже не обновлялся. Поделитесь, как обновить. - person HDdeveloper; 23.07.2013
comment
` [событие setAvailability: EKEventAvailabilityUnavailable]; NSError * ошибка = ноль; NSLog(@Event Availbility:%d,event.availability); [self.eventStore saveEvent: диапазон событий: ошибка EKSpanThisEvent: & error]; if (ошибка) { NSLog(@Save Event errorDiscription:%@,error.description); } ` Я пробовал это, но он не обновлялся и всегда возвращал -1. - person HDdeveloper; 23.07.2013