Buscar..


Solicitando Permiso

Su aplicación no puede acceder a sus recordatorios y su calendario sin permiso. En su lugar, debe mostrar una alerta al usuario, solicitándole que otorgue acceso a eventos para la aplicación.

Para comenzar, importe el framework EventKit :

Rápido

import EventKit

C objetivo

#import <EventKit/EventKit.h>

Haciendo un EKEventStore

Entonces, hacemos un objeto EKEventStore . Este es el objeto desde el que podemos acceder a los datos de calendario y recordatorios:

Rápido

let eventStore = EKEventStore()

C objetivo

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

Nota

Hacer un objeto EKEventStore cada vez que necesitamos acceder al calendario no es eficiente. Intenta hacerlo una vez y utilízalo en cualquier parte de tu código.

Comprobando disponibilidad

La disponibilidad tiene tres estados diferentes: Autorizado, Denegado y No determinado. No determinado significa que la aplicación debe otorgar acceso.

Para verificar la disponibilidad, usamos el método EKEventStore authorizationStatusForEntityType() del objeto EKEventStore :

Rápido

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

C objetivo

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

Solicitando Permiso

Ponga el siguiente código en el caso NotDetermined :

Rápido

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

Accediendo a diferentes tipos de calendarios.

Accediendo a la gama de calendarios.

Para acceder a la matriz de EKCalendar s, usamos el método calendarsForEntityType :

Rápido

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

Iterando a través de calendarios

Solo usa un simple bucle for :

Rápido

for calendar in calendarsArray{
    //...
}

Accediendo al título y color del calendario.

Rápido

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

C objetivo

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

Añadiendo un evento

Creando el objeto evento

Rápido

var event = EKEvent(eventStore: eventStore)

C objetivo

EKEvent *event = [EKEvent initWithEventStore:eventStore];

Configuración de calendario relacionado, título y fechas

Rápido

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

Añadiendo evento al calendario

Rápido

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

C objetivo

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow