2

具有EKCalendarItem属性“位置”,但它是一个NSString. 新的 iOS8 功能显示了一个很好的事件地图,所以必须有一个CLLocationCoordinate2D附加到EKCalendarItem,对吗?我在哪里可以找到这个CLLocationCoordinate2D

4

2 回答 2

5

这应该得到你需要的:

for (EKEvent *calEvent in self.allMyEvents) {

   EKStructuredLocation *location = (EKStructuredLocation *)[calEvent valueForKey:@"structuredLocation"];

   if (location) {

   }

}
于 2015-03-20T01:00:12.723 回答
0

EKCalendarItem不包含它具有location的任何 CLLocationCoordinate2D 属性,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);

    }
}];

这是从的 location 属性中locationString检索到的位置字符串。EKCalendarItem默认的 iCal 应用程序必须执行类似的操作,希望这对您有所帮助。

于 2014-09-30T13:28:25.137 回答