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 eines EKEventStore 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
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow