EKCalendarItem
的属性为“位置”,但它是NSString
。
新的iOS8功能显示了一个很好的事件地图,因此CLLocationCoordinate2D
必须附加EKCalendarItem
,对吗?
我在哪里可以找到CLLocationCoordinate2D
?
答案 0 :(得分:5)
这应该得到你需要的东西:
for (EKEvent *calEvent in self.allMyEvents) {
EKStructuredLocation *location = (EKStructuredLocation *)[calEvent valueForKey:@"structuredLocation"];
if (location) {
}
}
答案 1 :(得分:0)
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应用程序必须做类似的事情,希望这会对你有帮助。