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
}