MKReverseGeocoder“在iOS 5中弃用”

它说这是“在iOS 5中弃用”。

- (void)viewDidLoad { [super viewDidLoad]; CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder reverseGeocodeLocation:self.locationManager.location // You can pass aLocation here instead completionHandler:^(NSArray *placemarks, NSError *error) { dispatch_async(dispatch_get_main_queue() , ^ { // do stuff with placemarks on the main thread CLPlacemark *place = [placemarks objectAtIndex:0]; NSString *zipString = [place.addressDictionary valueForKey:@"ZIP"]; [self performSelectorInBackground:@selector(showWeatherFor:) withObject:zipString]; } } } 

在iOS4之后的所有固件中都弃用MKReverseGeocoder 。 这只是意味着现在已经过时了,不敢使用过时的课程。 改为使用CLGeocoder ,如下所示:

  CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder reverseGeocodeLocation:self.locationManager.location // You can pass aLocation here instead completionHandler:^(NSArray *placemarks, NSError *error) { dispatch_async(dispatch_get_main_queue(),^ { // do stuff with placemarks on the main thread if (placemarks.count == 1) { CLPlacemark *place = [placemarks objectAtIndex:0]; NSString *zipString = [place.addressDictionary valueForKey:@"ZIP"]; [self performSelectorInBackground:@selector(showWeatherFor:) withObject:zipString]; } }); }]; 

如果你想反转一个硬编码的坐标对的地理编码 –

用你的经度和纬度初始化一个CLLocation位置:

  CLLocation *aLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; 

我也想指出,你仍然可以使用MKReverseGeocoder 。 尽pipe可能会在将来的iOS更新中删除。

我不知道这是否回答您的默认问题,但文档说,而不是使用CLGeocoder 。