текущее местоположение всегда 00000.00, 00000.00

Я пытаюсь получить свое текущее местоположение и обратный код GeoCode для адреса, но я продолжаю получать свое местоположение до 00000.00 и широты 00000.00 Вот мой код

locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
    CLGeocoder *ceo = [[CLGeocoder alloc]init];
    currentLocation = [[CLLocation alloc]initWithLatitude:currentLocation.coordinate.latitude longitude:currentLocation.coordinate.longitude]; //insert your coordinates
    NSLog(@"loc:%@",currentLocation);
    [ceo reverseGeocodeLocation:currentLocation
              completionHandler:^(NSArray *placemarks, NSError *error) {
                  CLPlacemark *placemark = [placemarks objectAtIndex:0];
                  if (placemark) {
                     
                      NSString *strString =placemark.name;
                      NSLog(@"strString:%@",strString);
                      NSString *midstring = [strString stringByAppendingString:@","];
                      if (placemark.postalCode == nil) {
                          self->postalcodeString = @"00000";
                      }
                      else{
                          self->postalcodeString = placemark.postalCode;
                      }
                      
                      self->combineString = [midstring stringByAppendingString:self->postalcodeString];
                      NSLog(@"combineString:%@",self.combineString);
                  }

person user1114881    schedule 11.02.2021    source источник
comment
Вам нужно обработать местоположение в методах делегата, а не сразу после вызова startUpdatingLocation, поскольку в это время менеджер местоположения может еще не иметь доступной информации.   -  person Cristik    schedule 11.02.2021
comment
Я переместил диспетчер местоположения в viewDidAppear, но у меня все еще есть 0. Поэтому я добавил code - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *location = [locations lastObject]; NSLog(@lat%f - lon%f, location.coordinate.latitude, location.coordinate.longitude); } code но когда я сравнил его с адресами в моих контактах, он просто продолжал зацикливаться, поэтому я добавил code[locationManager stopUpdatingLocation]; code и это сработало, но немного громоздко. жаль, что я не мог просто получить свое текущее местоположение один раз, но это работает   -  person user1114881    schedule 12.02.2021