2016-05-09 12 views
0

Ich habe die vorliegende Methode, um das Erstellen eines Kalenderereignisses in EventKit zu ermöglichen.Wiederkehrendes wöchentliches Ereignis in Swift iOS EventKit

func createEvent(eventStore: EKEventStore, title: String, startDate: NSDate, endDate: NSDate) { 
    let event = EKEvent(eventStore: eventStore) 

    event.title = title 
    event.startDate = startDate 
    event.endDate = endDate 
    event.calendar = eventStore.defaultCalendarForNewEvents 

    do { 
     try eventStore.saveEvent(event, span: .ThisEvent) 
     savedEventId = event.eventIdentifier 
    } catch { 
     print("Bad things happened") 
    } 
} 

Allerdings möchte ich Benutzern erlauben, mehrere Tage der Woche auszuwählen, um ein wiederkehrendes Ereignis zu erstellen. Beispiel: Ein Benutzer legt die Uhrzeit auf 10:05 Uhr fest und wählt Montag, Mittwoch, Donnerstag aus. Wie kann ich EventKit so formulieren, dass dieses Ereignis im Kalender des Benutzers richtig geplant wird?

Antwort

2

Ich sehe, dass der Zeitstempel auf Ihrem Beitrag weit zurück im Mai ist, also brauchen Sie wahrscheinlich die Hilfe nicht mehr, aber für jeden, der über diese Frage stolpert, müssen Sie die EKRecurrenceRule class verwenden und anhängen das Ereignis.

Hier ist ein Beispiel in Objective-C der Verwendung es für jeden Freitag eine Veranstaltung planen (wie Ihr Szenario):

// The EKRecurrenceRule accepts an NSArray of day objects, I did this to make adding multiple days easier 
NSMutableArray *daysArr = [[NSMutableArray alloc] init]; 

// Days of the week are ordered Sunday to Saturday, 1-7 
EKRecurrenceDayOfWeek *theDay = [[EKRecurrenceDayOfWeek alloc] initWithDayOfTheWeek:6 weekNumber:0]; 

// Add Friday to the array 
[daysArr addObject:theDay]; 

// Instantiate the EKRecurrenceRule, giving it a weekly frequency and the day of the week 
EKRecurrenceRule *recurrenceRule = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency:EKRecurrenceFrequencyWeekly interval:1 daysOfTheWeek:daysArr daysOfTheMonth:nil monthsOfTheYear:nil weeksOfTheYear:nil daysOfTheYear:nil setPositions:nil end:nil]; 

// Apply it to the event 
[event setRecurrenceRules:@[recurrenceRule]]; 

Ich hoffe, das jemand heraus hilft!