2013-06-25 61 views
0

我正在開發一個應用程序,當用戶添加任何事件作爲他的最愛時,我將該事件添加到iCal,但如果用戶從他的最愛中刪除該特定事件,我如何從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]; 
      } 

我如何得到事件標識符ñ刪除iCal中的特定事件。任何幫助,將不勝感激。

回答

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

相關問題