2013-07-23 7 views
1

어떻게하면 사용자가 EKEvent를 완료로 표시 할 수 있습니까? 현재 날짜에 대한 이벤트를 가져 와서 UITableView에 표시하고 있습니다.EKEvent를 완료로 표시하려면 어떻게해야합니까?

// 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.

을 탐험 그러나 아무도 유용 없었다.

나는

[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); 
     } 

EKEventAvailability을 시도하지만 업데이트 -1 (EKEventAvailabilityNotSupported) 및 업데이트를 반환하지 않았습니다.

주세요.

감사합니다.

답변

0

탭된 이벤트의 availabilityEKEventAvailabilityUnavailable으로 변경할 수 있습니다. 이벤트가 완료되면 논리적으로 사용할 수 없습니까?

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

편집 :
우리는 교대 EKEvent의 eventIdentifier 속성을 사용할 수 있습니다.

이것은 이벤트의 고유 식별자 인 입니다. (읽기 전용) 사용자가 이벤트를 탭하여 나중에 사용할 때 로컬 또는 CoreData에 저장할 수 있습니다.

+0

나는 그것을 시도했지만 그것이'EKEventAvailabilityNotSupported', 을 돌려 주었고 업데이트조차하지 않았다. 그것을 업데이트하는 방법을 공유하십시오. – HDdeveloper

+0

'[event setAvailability : EKEventAvailabilityUnavailable]; NSError * error = nil; NSLog (@ "Event Availbility : % d", event.availability); [self.eventStore saveEvent : 이벤트 범위 : EKSpanThisEvent 오류 : & 오류]; if (error) { NSLog (@ "Save Event errorDiscription : % @", error.description); }' 나는 이것을 시도했지만 항상 -1을 반환하지는 않았다. – HDdeveloper