[英]Add location to EKEvent IOS Calendar
如何不仅添加 NSString 还添加纬度和经度的位置,以便在日历中也显示地图?
<EKCalendarItem>
@property(nonatomic, copy) NSString *location;
代码 :
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
}];
属性structuredLocation
位置在 iOS 9 上可用,虽然 EKEvent 文档没有提到它(更新:它终于在这里),但structuredLocation
确实存在于 EKEvent 公共头文件中,您可以在 Xcode 中检查它。 iOS 9 后无需使用 KVC 进行设置。
Swift 版本如下:
let location = CLLocation(latitude: 25.0340, longitude: 121.5645)
let structuredLocation = EKStructuredLocation(title: placeName) // same title with ekEvent.location
structuredLocation.geoLocation = location
ekEvent.structuredLocation = structuredLocation
很奇怪,没有这方面的文档,但这就是将 geoLocation 添加到日历事件的方式。
EKStructuredLocation* structuredLocation = [EKStructuredLocation locationWithTitle:@"Location"]; // locationWithTitle has the same behavior as event.location
CLLocation* location = [[CLLocation alloc] initWithLatitude:0.0 longitude:0.0];
structuredLocation.geoLocation = location;
[event setValue:structuredLocation forKey:@"structuredLocation"];
您可能可以在创建 EKStructuredLocation 后在 EKEvent 上使用 setValue:ForKey: 键是“structuredLocation”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.