2013-06-25 1 views
0

사용자가 좋아하는 이벤트를 추가 할 때 해당 이벤트를 iCal에 추가하는 앱을 개발 중이지만 사용자가 좋아하는 이벤트를 제거하면 iCal에서 해당 이벤트를 제거하는 방법은 무엇입니까? 내가 이벤트 식별자를 얻을 N의 iCal에서 특정 이벤트를 제거하려면 어떻게내 앱에서 iCal에서 이벤트를 삭제하는 방법.

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[[self.parentDetailArray valueForKey:@"start_time_num"] intValue]]; 
      NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init]; 
      [dateformatter setLocale:[NSLocale currentLocale]]; 
      [dateformatter setDateFormat:@"dd-MM-yyyy"]; 
      NSString *dateString=[dateformatter stringFromDate:date]; 

      EKEventStore *eventStore = [[EKEventStore alloc] init]; 

      if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) 
{ 
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
      if (granted){ 
      //---- codes here when user allow your app to access theirs' calendar. 

      EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 
      event.title  = title; 
      event.startDate = date; 
      event.endDate = [[NSDate alloc] initWithTimeInterval:1000 sinceDate:event.startDate]; 

      [event setCalendar:[eventStore defaultCalendarForNewEvents]]; 
      NSError *err; 
      [eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 

// Here I'm trying to get the identifier of that event but m getting only (null) 
      self.str = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier]; 
      [self.arrayofEventId addObject:self.str]; 

      //[self performCalendarActivity:eventStore]; 
      }else 
      { 
      //----- codes here when user NOT allow your app to access the calendar. 
      } 
      }]; 
      } 
      else { 
      //---- codes here for IOS < 6.0. 
      EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 
      event.title  = @"Testing for calendar"; 

      event.startDate = [[NSDate alloc] init]; 
      NSLog(@"%@",event.startDate); 
      [event setCalendar:[eventStore defaultCalendarForNewEvents]]; 
      NSError *err; 
      [eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 
      //[self performCalendarActivity:eventStore]; 
      } 

:

여기 내 코드입니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

모든 앱에서 생성 한 이벤트 ID를 파일에 기록한 후 다음에 앱이로드 될 때 다시로드 할 수 있습니다. 이렇게하면 앱에서 만든 이벤트를 추적 할 수 있습니다. 그럼 당신은이 방법을 시도 할 수 있습니다 :

- (BOOL)removeEvent:(EKEvent *)event span:(EKSpan)span commit:(BOOL)commit error:(NSError **)error 

를이와 세이브 :

NSString *id = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier]; 

이 함께 제거 :

EKEvent *event = [eventStore eventWithIdentifier:id]; 

NSError *error = nil; 
[eventStore removeEvent:event span:EKSpanThisEvent error:&error]; 

애플은 EKEventStore here에 문서가 있습니다.

+0

나는 모든 이벤트 ID를 가변 배열에 저장하고 그 배열을 파일에 저장하므로 내 응용 프로그램에서 추가 한 모든 이벤트를 추적 할 수 있습니다. 하지만이 제거 방법을 사용하면 콘솔에서이 메시지가 표시됩니다. "작업을 완료 할 수 없습니다 (Mach 오류 268435459 - (ipc/send) 잘못된 대상 포트). – Zac24