didFailWithError: ошибка домена=код kCLErrorDomain=0 " операция не может быть завершена. (ошибка kCLErrorDomain 0.)"

Я хочу получить текущее местоположение, но вместо этого я получаю ошибку.

это фрагмент моего контроллера вида.

- (void)viewDidLoad {
    self.locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
    [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager 
     didUpdateLocations:(NSArray<CLLocation *> *)locations {
    // I would get the latest location here
    // but this method never gets called
}
- (void)locationManager:(CLLocationManager *)manager 
       didFailWithError:(NSError *)error {
    NSLog(@"didFailWithError: %@", error);
}

Я ожидаю метод делегата locationManager:didUpdateLocations: чтобы получить вызов, но вместо этого только locationManager:didFailWithError: звонит, и печатает это:

didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)" 

17 ответов


  1. проверьте, что у вас действительно есть действительное соединение WiFi и 3G

    ...если да, то:

  2. перейдите в настройки и сбросить службы определения местоположения

  3. сбросить настройки сети

Это должно решить эту проблему. Это связано с устройством / сетью, а не с приложением. Это раздражает, особенно если ваше приложение зависит от услуг, расположение и устройство WiFi только и люди дают негативные рейтинги в AppStore... Простите,я становлюсь немного эмоциональным.


Если вы используете тренажер:

  1. пресс command + shift + , в Xcode, чтобы открыть редактор схемы
  2. выбрать программу
  3. перейдите на вкладку Параметры
  4. Регистрация Allow Location Simulation
  5. выберите местоположение по умолчанию в раскрывающемся списке

выбор None поскольку ваше местоположение по умолчанию, возможно, вызвало проблему.


просто проигнорируйте эту ошибку и дождитесь дополнительных обновлений или другой ошибки.

документы для диспетчера местоположений говорят, что эта ошибка является временной. Это дает вам знать, что ему не удалось сразу получить местоположение, но он продолжает пытаться. "В такой ситуации можно просто проигнорировать ошибку и дождаться нового события."Это действительно тупой способ использовать метод с именем locationManager:didFailWithError: - Спасибо Apple!

Apple Documentation


попробуйте перезапустить симулятор (предполагая, что вы используете).

попробовав все остальное, это сработало для меня.


перезапуск симулятора не сработал для меня.

Я должен был очистить все через "iOS Simulator" >> "Reset Content and Settings....


Я получал эту ошибку на симуляторе. Нажатие кнопки расположение на панели отладки и установка местоположения исправили проблему для меня. (Убедитесь, что кнопка синяя)

enter image description here


У меня такая же проблема. Я считаю, что возможные объяснения / исправления покрыты в должности.


изменение "местоположения" на симуляторе сработало для меня.

Debug > Location > (мой был проверен ни один вместо езды на велосипеде по городу например)


  1. в симуляторе перейдите в Настройки > Общие > Сброс > Сброс местоположения и конфиденциальности

  2. выйти из симулятора и запустить приложение снова


предполагая, что вы используете симулятор, вы можете Debug -> Location и установить местоположение.

Если вы не выбрали у вас будет эта ошибка.


Если вы используете custom location убедитесь, что у вас есть длинный и lat правильный путь, я его перевернул и потратил 3 часа, прежде чем понял...


Я вижу проблему раньше,есть способ ее решить,но она может работать только один раз.Если вы хотите запустить проект снова, и вам нужно повторять решение каждый раз.

1.В Xcode, Product - > Scheme - > Edit Scheme, затем отмените "разрешить симулятор местоположения".

2.К симулятору iOS и сбросить содержимое и настройки.

3.Снова в Xcode,повторите первый шаг.

4.К симулятору iOS и сбросу. Затем это сработает.


такие проблемы можно решить, установив местоположение как"Apple". По крайней мере, это работает для тестирования.


  1. я сбросил содержимое и настройки.
  2. удалены данные из производных данных.
  3. перезапустил Xcode и симулятор и работал на меня.

из ответа @Mem и многих других спасибо


для возвращенных разработчиков:) просто выберите"Debug->Location->Freeway Drive" из меню симулятора. Если все еще проблема, попробуйте после выполнения "Simulator- > Reset Content and Settings" сформировать меню симулятора. Это помогло мне однажды в том же вопросе. Некоторое время расположение симулятора установлено в "Custom location " из-за чего он ничего не обнаруживает.


попробуйте в устройстве. Иногда симулятор не может принять ваше местоположение.


домой в симулятор

главная - > Настройки - > Конфиденциальность - >местоположения - > выберите приложение и выберите всегда