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
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow