Sök…


Begär tillstånd

Din app kan inte komma åt dina påminnelser och din kalender utan tillstånd. Istället måste den visa en varning till användaren och begära honom / henne att ge åtkomst till händelser för appen.

För att komma igång, importera EventKit ramverket:

Snabb

import EventKit

Objective-C

#import <EventKit/EventKit.h>

Gör en EKEventStore

Sedan gör vi ett EKEventStore objekt. Detta är objektet från vilket vi kan komma åt kalender- och påminnelsedata:

Snabb

let eventStore = EKEventStore()

Objective-C

EKEventStore *eventStore = [[EKEventStore alloc] init];

Notera

Att göra ett EKEventStore objekt varje gång vi behöver åtkomst till kalendern är inte effektivt. Försök göra det en gång och använd det överallt i din kod.

Kollar tillgänglighet

Tillgänglighet har tre olika status: Auktoriserad, nekad och inte bestämd. Ej bestämd betyder att appen måste ge åtkomst.

För att kontrollera tillgängligheten använder vi authorizationStatusForEntityType() -metoden för EKEventStore objektet:

Snabb

switch EKEventStore.authorizationStatusForEntityType(EKEntityTypeEvent){
    case .Authorized: //...
    case .Denied: //...
    case .NotDetermined: //...
    default: break
}

Objective-C

switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]){
    case EKAuthorizationStatus.Authorized:
        //...
        break;
    case EKAuthorizationStatus.Denied:
        //...
        break;
    case EKAuthorizationStatus.NotDetermined:
        //...
        break;
    default:
        break;
}

Begär tillstånd

Sätt följande kod i NotDetermined case:

Snabb

eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { [weak self] (userGrantedAccess, _) -> Void in
    if userGrantedAccess{
        //access calendar
    }
}

Åtkomst till olika typer av kalendrar

Åtkomst till matrisen med kalendrar

För att få tillgång till matrisen med EKCalendar s använder vi metoden calendarsForEntityType :

Snabb

let calendarsArray = eventStore.calendarsForEntityType(EKEntityType.Event) as! [EKCalendar]

Iterating genom kalendrar

Använd bara en enkel for loop:

Snabb

for calendar in calendarsArray{
    //...
}

Få åtkomst till kalendertitel och färg

Snabb

let calendarColor = UIColor(CGColor: calendar.CGColor)
let calendarTitle = calendar.title

Objective-C

UIColor *calendarColor = [UIColor initWithCGColor: calendar.CGColor];
NSString *calendarTitle = calendar.title;

Lägga till en händelse

Skapa händelseobjektet

Snabb

var event = EKEvent(eventStore: eventStore)

Objective-C

EKEvent *event = [EKEvent initWithEventStore:eventStore];

Ställer in relaterad kalender, titel och datum

Snabb

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

Lägga till händelse i kalendern

Snabb

try {
    do eventStore.saveEvent(event, span: EKSpan.ThisEvent)
} catch let error as NSError {
    //error
}

Objective-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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow