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
}