2016-04-05 14 views
0

EventKitを使用すると、iphoneカレンダーに予定を追加できます。EkCalendarを使用して新しいカレンダーを作成できます。しかし、今reqirementは、iPhoneのカレンダーで単一のイベントを削除する必要があります。これどうやってするの。あなたのDBまたは任意のストレージに店舗EventIdentifierのカレンダーにイベントを追加しながら、事前Ekcalendarを使用すると、削除アクションをクリックして特定のイベントを削除する方法

func retrieveYourCalendar() { 
    let calendars = eventStore.calendarsForEntityType(EKEntityType.Event) 

    if(yourReminderCalendar == nil) { 
     for calendar in calendars { 
      if calendar.title == "new" { 
       yourReminderCalendar = (calendar as EKCalendar) 
       // Exist = true 
       break 
      } 
     } 

     if(yourReminderCalendar == nil) { 
      yourReminderCalendar = EKCalendar(forEntityType: EKEntityType.Event, eventStore: eventStore) 
      yourReminderCalendar!.title = "new" 
      yourReminderCalendar!.source = eventStore.defaultCalendarForNewEvents.source 
      // var error: NSError? 
      do { 
       try eventStore.saveCalendar(yourReminderCalendar!, commit: true) 
       // self.calendarIdentifier = yourReminderCalendar!.calendarIdentifier 
       print("Event calender saved") 

      } 
      catch(_){} 
     } 
    } 






} 

答えて

1

のおかげで、。削除する特定のイベントを特定すると便利です。あなたは、識別子に基づいてイベントを削除することができ、次のコードを使用することにより

のObjective C:

EKEventStore *store = [[EKEventStore alloc] init]; 
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
    if (!granted) return; 
    EKEvent* eventToRemove = [store eventWithIdentifier:savedEventId]; 
    if (eventToRemove) { 
    NSError* err = nil; 
    [store removeEvent:eventToRemove span:EKSpanThisEvent commit:YES error:&err]; 
    } 
}]; 

スウィフト:開始日と終了日に基づいてフェッチのイベント。

// Create an Event Store instance 
let eventStore = EKEventStore(); 
eventStore.requestAccessToEntityType(EKEntityType.Event, completion: { 
            (accessGranted: Bool, error: NSError?) in 
             
            if accessGranted == true { 
                var startDate=NSDate().dateByAddingTimeInterval(-60*60*24) 

     var endDate=NSDate().dateByAddingTimeInterval(60*60*24*3) 

     var predicate2 = eventStore.predicateForEventsWithStartDate(startDate, endDate: endDate, calendars: nil) 



     println("startDate:\(startDate) endDate:\(endDate)") 

     var eV = eventStore.eventsMatchingPredicate(predicate2) as [EKEvent]! 



     if eV != nil { 

eventStore.removeEvent(eV, span:EKSpanFutureEvents, commit:true, error:&error) 
} 

            } else { 
                return 
            } 
        }) 

swiftの更新された回答を確認してください。 FYI:私は迅速にコードをテストしませんでした。

+1

これはObjective-Cです。あなたは私のために素早いコードを教えてもらえますか?Krar –

+0

plz help anyone here @EricD –

+0

@ sreeji44 swiftのための私の更新答えをチェックしてください。お役に立てれば。 –

関連する問題