DidFailWithError: Error Domain = kCLErrorDomain Code = 0 "Операция не может быть выполнена. (kCLErrorDomain error 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.)" 

Ответ 1

  1. Убедитесь, что у вас есть действующее соединение WiFi и 3G

    ... если вы это сделаете, то:

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

  3. Сброс настроек вашей сети

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

Ответ 2

Если вы используете симулятор:

  • Нажмите command + shift + , в Xcode, чтобы открыть редактор схемы
  • Выберите схему запуска
  • Перейдите на вкладку "Параметры"
  • Проверить ✅ Allow Location Simulation
  • Выберите расположение по умолчанию в раскрывающемся меню

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

Ответ 3

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

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

Apple Documentation

Ответ 4

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

После прочего все это сработало для меня.

Ответ 5

Повторный запуск симулятора не помог мне.

Мне пришлось очистить все через "iOS Simulator" >> "Reset Content and Settings....

Ответ 6

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

enter image description here

Ответ 7

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

Ответ 8

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

Отладкa > Местоположение > (Шахта была отмечена None вместо City Bicycle Ride например.)

Ответ 9

  • В симуляторе перейдите в Настройки > Общие > Reset > Reset Местоположение и конфиденциальность

  • Закройте симулятор и запустите приложение снова

Ответ 10

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

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

Ответ 11

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

Ответ 12

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

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

2. В iOS Simulator и reset Содержимое и настройка.

3.Again для Xcode, повторите первый шаг.

4. В iOS Simulator и reset. Тогда это сработает.

Ответ 13

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

Ответ 14

  • Я сбросил содержимое и настройки.
  • Удалены данные из полученных данных.
  • Перезагрузил Xcode и Simulator и работал у меня.

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

Ответ 15

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

Ответ 16

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

Ответ 17

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

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

Ответ 18

при добавлении разрешения Конфиденциальность - Расположение при использовании Описание использования в info.plist было решено за меня

Ответ 19

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

enter image description here