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 вместо этого.

Другие вопросы по тегам