Suche…
Erlaubnis beantragen
Ihre App kann ohne Erlaubnis nicht auf Ihre Erinnerungen und Ihren Kalender zugreifen. Stattdessen muss der Benutzer eine Warnung erhalten, die ihn auffordert, Zugriff auf Ereignisse für die App zu gewähren.
Importieren Sie zunächst das EventKit
Framework:
Schnell
import EventKit
Ziel c
#import <EventKit/EventKit.h>
Einen EKEventStore
Dann EKEventStore
wir ein EKEventStore
Objekt. Dies ist das Objekt, von dem aus wir auf Kalender- und Erinnerungsdaten zugreifen können:
Schnell
let eventStore = EKEventStore()
Ziel c
EKEventStore *eventStore = [[EKEventStore alloc] init];
Hinweis
Das
EKEventStore
einesEKEventStore
Objekts bei jedem Zugriff auf den Kalender ist nicht effizient. Versuchen Sie es einmal zu erstellen und verwenden Sie es überall in Ihrem Code.
Verfügbarkeit überprüfen
Verfügbarkeit hat drei verschiedene Status: Autorisiert, Abgelehnt und Nicht bestimmt. Nicht bestimmt bedeutet, dass die App Zugriff gewähren muss.
Um die Verfügbarkeit zu prüfen, verwenden wir die Methode EKEventStore
authorizationStatusForEntityType()
des EKEventStore
Objekts:
Schnell
switch EKEventStore.authorizationStatusForEntityType(EKEntityTypeEvent){
case .Authorized: //...
case .Denied: //...
case .NotDetermined: //...
default: break
}
Ziel c
switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]){
case EKAuthorizationStatus.Authorized:
//...
break;
case EKAuthorizationStatus.Denied:
//...
break;
case EKAuthorizationStatus.NotDetermined:
//...
break;
default:
break;
}
Erlaubnis beantragen
NotDetermined
Sie den folgenden Code in den NotDetermined
Fall ein:
Schnell
eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { [weak self] (userGrantedAccess, _) -> Void in
if userGrantedAccess{
//access calendar
}
}
Zugriff auf verschiedene Kalendertypen
Zugriff auf die Kalenderreihe
Für den Zugriff auf das Array von EKCalendar
wir die Methode calendarsForEntityType
:
Schnell
let calendarsArray = eventStore.calendarsForEntityType(EKEntityType.Event) as! [EKCalendar]
Iteration durch Kalender
Verwenden Sie einfach eine einfache for
Schleife:
Schnell
for calendar in calendarsArray{
//...
}
Zugriff auf den Kalendertitel und die Farbe
Schnell
let calendarColor = UIColor(CGColor: calendar.CGColor)
let calendarTitle = calendar.title
Ziel c
UIColor *calendarColor = [UIColor initWithCGColor: calendar.CGColor];
NSString *calendarTitle = calendar.title;
Ereignis hinzufügen
Ereignisobjekt erstellen
Schnell
var event = EKEvent(eventStore: eventStore)
Ziel c
EKEvent *event = [EKEvent initWithEventStore:eventStore];
Einstellen des zugehörigen Kalenders, Titels und Datums
Schnell
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
Ereignis zum Kalender hinzufügen
Schnell
try {
do eventStore.saveEvent(event, span: EKSpan.ThisEvent)
} catch let error as NSError {
//error
}
Ziel c
NSError *error;
BOOL *result = [eventStore saveEvent:event span:EKSpanThisEvent error:&error];
if (result == NO){
//error
}