Zoeken…
Toestemming vragen
Uw app heeft geen toegang tot uw herinneringen en uw agenda zonder toestemming. In plaats daarvan moet de gebruiker een waarschuwing krijgen waarin hij / zij wordt gevraagd toegang te verlenen tot evenementen voor de app.
Importeer het EventKit
framework om te beginnen:
Snel
import EventKit
Doelstelling C
#import <EventKit/EventKit.h>
Een EKEventStore
Vervolgens maken we een EKEventStore
object. Dit is het object van waaruit we toegang hebben tot agenda- en herinneringsgegevens:
Snel
let eventStore = EKEventStore()
Doelstelling C
EKEventStore *eventStore = [[EKEventStore alloc] init];
Notitie
Een
EKEventStore
object maken elke keer dat we toegang moeten hebben tot de agenda, is niet efficiënt. Probeer het een keer te maken en gebruik het overal in uw code.
Beschikbaarheid controleren
Beschikbaarheid heeft drie verschillende statusen: Geautoriseerd, Geweigerd en Niet bepaald. Niet bepaald betekent dat de app toegang moet verlenen.
Om de beschikbaarheid te controleren, gebruiken we de methode authorizationStatusForEntityType()
van het EKEventStore
object:
Snel
switch EKEventStore.authorizationStatusForEntityType(EKEntityTypeEvent){
case .Authorized: //...
case .Denied: //...
case .NotDetermined: //...
default: break
}
Doelstelling C
switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]){
case EKAuthorizationStatus.Authorized:
//...
break;
case EKAuthorizationStatus.Denied:
//...
break;
case EKAuthorizationStatus.NotDetermined:
//...
break;
default:
break;
}
Toestemming vragen
Zet de volgende code in NotDetermined
geval:
Snel
eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { [weak self] (userGrantedAccess, _) -> Void in
if userGrantedAccess{
//access calendar
}
}
Toegang tot verschillende soorten agenda's
Toegang tot de reeks agenda's
Om toegang te krijgen tot de reeks EKCalendar
's, gebruiken we de methode calendarsForEntityType
:
Snel
let calendarsArray = eventStore.calendarsForEntityType(EKEntityType.Event) as! [EKCalendar]
Door kalenders bladeren
Gewoon gebruik maken van een eenvoudig for
lus:
Snel
for calendar in calendarsArray{
//...
}
Toegang tot de kalendertitel en kleur
Snel
let calendarColor = UIColor(CGColor: calendar.CGColor)
let calendarTitle = calendar.title
Doelstelling C
UIColor *calendarColor = [UIColor initWithCGColor: calendar.CGColor];
NSString *calendarTitle = calendar.title;
Evenement toevoegen
Het gebeurtenisobject maken
Snel
var event = EKEvent(eventStore: eventStore)
Doelstelling C
EKEvent *event = [EKEvent initWithEventStore:eventStore];
Gerelateerde kalender, titel en datums instellen
Snel
event.calendar = calendar
event.title = "Event Title"
event.startDate = startDate //assuming startDate is a valid NSDate object
event.endDate = endDate //assuming endDate is a valid NSDate object
Evenement toevoegen aan agenda
Snel
try {
do eventStore.saveEvent(event, span: EKSpan.ThisEvent)
} catch let error as NSError {
//error
}
Doelstelling C
NSError *error;
BOOL *result = [eventStore saveEvent:event span:EKSpanThisEvent error:&error];
if (result == NO){
//error
}