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];
}
}
}
2 ответа
Решение
MKReverseGeocoder
устарела во всех прошивках после iOS4. Это просто означает, что теперь он устарел и не одобряет использование устаревшего класса. использование 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];
}
});
}];
Если вы хотите изменить геокодирование жестко закодированной пары координат perse -
Инициализируйте местоположение CLLocation с вашей широтой и долготой:
CLLocation *aLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
Я также хочу отметить, что вы все еще можете использовать MKReverseGeocoder
, Это может быть удалено с будущими обновлениями iOS все же.
Я не знаю, отвечает ли это на ваш молчаливый вопрос, но в документации сказано использовать CLGeocoder вместо этого.