Agregar location al calendar EKEvent IOS

¿Cómo agregar la location no solo NSString sino con latitud y longitud, por lo que también muestra un map en el Calendario?

<EKCalendarItem> 

https://developer.apple.com/LIBRARY/ios/documentation/EventKit/Reference/EKCalendarItemClassRef/index.html#//apple_ref/occ/instp/EKCalendarItem/location

 @property(nonatomic, copy) NSString *location; 

Código:

  EKEventStore *store = [[EKEventStore alloc] init]; [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { if (!granted) { return; } EKEvent *event = [EKEvent eventWithEventStore:store]; event.title = @"Event Title"; event.startDate = [NSDate date]; //today event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; //set 1 hour meeting event.notes=@"Note"; event.location=@"Eiffel Tower,Paris"; //how do i add Lat & long / CLLocation? event.URL=[NSURL URLWithString:shareUrl]; [event setCalendar:[store defaultCalendarForNewEvents]]; NSError *err = nil; [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err]; NSString *savedEventId = event.eventIdentifier; //this is so you can access this event later }]; 

Ejemplo

La propiedad structunetworkingLocation está disponible en iOS 9, aunque la documentation de EKEvent no lo menciona, pero structunetworkingLocation existe en el file de encabezado público de EKEvent, y puede verificarlo dentro de Xcode. No es necesario usar KVC para configurarlo después de iOS 9.

Versión Swift de la siguiente manera:

 let location = CLLocation(latitude: 25.0340, longitude: 121.5645) let structunetworkingLocation = EKStructunetworkingLocation(title: placeName) // same title with ekEvent.location structunetworkingLocation.geoLocation = location ekEvent.structunetworkingLocation = structunetworkingLocation 

Es bastante extraño que no haya documentation para esto, pero así es como agrega una geolocation a un evento de calendar.

 EKStructunetworkingLocation* structunetworkingLocation = [EKStructunetworkingLocation locationWithTitle:@"Location"]; // locationWithTitle has the same behavior as event.location CLLocation* location = [[CLLocation alloc] initWithLatitude:0.0 longitude:0.0]; structunetworkingLocation.geoLocation = location; [event setValue:structunetworkingLocation forKey:@"structunetworkingLocation"]; 

Es posible que pueda usar setValue: ForKey: en el EKEvent después de crear una EKSuctunetworkingLocation, la key es 'structunetworkingLocation'