EKCalendarItem
具有属性"Location",但它是NSString
。新的iOS8功能为事件显示了一个很好的映射,所以EKCalendarItem
必须附加一个CLLocationCoordinate2D
,对吗?我在哪里可以找到这个CLLocationCoordinate2D
?
这应该会得到你需要的:
for (EKEvent *calEvent in self.allMyEvents) {
EKStructuredLocation *location = (EKStructuredLocation *)[calEvent valueForKey:@"structuredLocation"];
if (location) {
}
}
EKCalendarItem
不包含任何CLLocationCoordinate2D属性,它具有location
,即您在问题中提到的NSString
。
您可以使用location
属性来获取坐标。您可以使用CoreLocation
框架的CLGeocoder
从字符串中获取坐标。
您可以使用此代码。
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:locationString completionHandler:^(NSArray *placemarks, NSError *error) {
if([placemarks count]) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
CLLocation *location = placemark.location;
CLLocationCoordinate2D coordinate = location.coordinate;
NSLog(@"coordinate = (%f, %f)", coordinate.latitude, coordinate.longitude);
}
}];
这里locationString
是从EKCalendarItem
的位置属性中检索到的位置字符串。默认的iCal应用程序必须做类似的事情,希望这能帮助你。