Ricerca…
Richiesta di autorizzazione
La tua app non può accedere ai tuoi promemoria e al tuo calendario senza autorizzazione. Invece, deve mostrare un avviso all'utente, chiedendogli di concedere l'accesso agli eventi per l'app.
Per iniziare, importa il framework EventKit
:
veloce
import EventKit
Objective-C
#import <EventKit/EventKit.h>
Creare un EKEventStore
Quindi, creiamo un oggetto EKEventStore
. Questo è l'oggetto da cui possiamo accedere ai dati del calendario e dei promemoria:
veloce
let eventStore = EKEventStore()
Objective-C
EKEventStore *eventStore = [[EKEventStore alloc] init];
Nota
Creare un oggetto
EKEventStore
ogni volta che è necessario accedere al calendario non è efficiente. Prova a farlo una volta e usalo ovunque nel tuo codice.
Controllando la disponibilità
La disponibilità ha tre diversi stati: Autorizzato, Rifiutato e Non determinato. Non determinato significa che l'app deve concedere l'accesso.
Per verificare la disponibilità, utilizziamo il metodo authorizationStatusForEntityType()
dell'oggetto EKEventStore
:
veloce
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;
}
Richiesta di autorizzazione
Inserisci il seguente codice nel caso NotDetermined
:
veloce
eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { [weak self] (userGrantedAccess, _) -> Void in
if userGrantedAccess{
//access calendar
}
}
Accesso a diversi tipi di calendari
Accesso alla serie di calendari
Per accedere alla matrice di EKCalendar
s, usiamo il metodo calendarsForEntityType
:
veloce
let calendarsArray = eventStore.calendarsForEntityType(EKEntityType.Event) as! [EKCalendar]
Iterare attraverso i calendari
Basta usare un ciclo for
semplice:
veloce
for calendar in calendarsArray{
//...
}
Accesso al titolo e al colore del calendario
veloce
let calendarColor = UIColor(CGColor: calendar.CGColor)
let calendarTitle = calendar.title
Objective-C
UIColor *calendarColor = [UIColor initWithCGColor: calendar.CGColor];
NSString *calendarTitle = calendar.title;
Aggiungere un evento
Creare l'oggetto evento
veloce
var event = EKEvent(eventStore: eventStore)
Objective-C
EKEvent *event = [EKEvent initWithEventStore:eventStore];
Impostazione calendario, titolo e date correlati
veloce
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
Aggiunta di eventi al calendario
veloce
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
}