didFailWithError: Error Domain = kCLErrorDomain Code = 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.)" 

person Luca    schedule 17.05.2011    source источник
comment
В качестве альтернативы вы можете использовать API Google. См. Мой ответ здесь stackoverflow.com/a/40670608/2033377   -  person Deepak Thakur    schedule 18.11.2016
comment
симулятор goto - ›особенности -› локация - ›Apple. если у вас установлено значение none, это не сработает и выдаст эту ошибку. Я сделал это случайно   -  person Maddocks    schedule 22.11.2020


Ответы (19)


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

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

  2. Зайдите в настройки и сбросьте свои геолокационные службы

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

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

person MeM    schedule 20.07.2011
comment
Насколько я знаю, GPS не требует подключения к Интернету или Wi-Fi. Это просто приемник, если он находится в доступном месте с 2 или 3 спутниками GPS, мы можем получить координаты географического местоположения. Тогда почему возникает ошибка, если есть нет интернета или Wi-Fi? - person Durai Amuthan.H; 06.12.2013
comment
Один голос за указание на сброс служб определения местоположения и сетевых настроек - person Durai Amuthan.H; 06.12.2013
comment
Вам не нужно проходить эти шаги. Просто проигнорируйте эту ошибку и дождитесь новых обновлений. См. Мой ответ ниже или просмотрите документы по адресу developer.apple.com/library/ios/documentation/corelocation/: - person Ray Lillywhite; 10.09.2014
comment
Эта ошибка свела меня с ума. - person Hermann Klecker; 29.09.2014
comment
У меня была точно такая же проблема, когда я играл с MapKit и CoreLocation на моем устройстве (iPhone 5S, iOS 8.1.3). Мне не удалось определить местоположение, и я снова и снова получал ту же ошибку (несмотря на хороший сигнал мобильной сети). Пока я не включил WiFi, и все не было исправлено! Странно ... Спасибо! - person Vinzzz; 18.02.2015
comment
Это решило мою проблему ... Спасибо, 1. Я повторно залил содержимое и настройки. - person Arpit B Parekh; 02.07.2015
comment
2. Удалены данные из производных данных. 3. Перезапустил Xcode и Simulator и работал у меня как шарм, спасибо. - person Arpit B Parekh; 02.07.2015
comment
@ DuraiAmuthan.H На iPad нет реального оборудования GPS. Они используют базу данных MAC-адресов Wi-Fi для определения вашего местоположения. - person whoKnows; 11.10.2015
comment
@whoKnows - У них есть встроенный GPS-приемник ... GPS с поддержкой .. Он использует сигнал Wi-Fi и / или вышки сотовой связи для определения местоположения. 3G / LTE iPad имеет встроенный GPS - person Durai Amuthan.H; 08.12.2015
comment
@MeM Я бы никогда этого не заметил. Вы только что сэкономили мне ЧАСЫ. - person Sam Ballantyne; 04.06.2016
comment
Итак, в основном Xcode сообщает мне об ошибке, и что правильно сделать, это полностью ее игнорировать? Почему я не удивлен ... - person Daniel Springer; 18.02.2019

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

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

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

person sKhan    schedule 18.06.2013
comment
Вау! Спасибо, я гонялся за этим несколько недель. Мое приложение заставляло мой iPad или iPhone перемещаться в Лондон, Англия, и я не мог понять почему. Я отключил эту опцию, и проблема исчезла. Может быть, это была икота, которая захватывала местоположение, а затем уходила и меняла местоположение на то, что указано на схеме. - person Andrew Smith; 07.11.2013
comment
Сработало у меня, но мне тоже приходилось делать iOS SimulatorReset Content and Settings... - person bendytree; 14.11.2014
comment
Пригвоздил это для меня. - person ScottyBlades; 27.08.2017

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

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

_ 2_

person Ray Lillywhite    schedule 10.09.2014

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

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

person Ian    schedule 18.12.2013
comment
У меня тоже сработало. Спасибо - person cozmin-calin; 01.10.2020

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

Пришлось все очищать через "iOS Simulator" >> "Reset Content and Settings....

person Brandon O'Rourke    schedule 09.07.2014

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

введите описание изображения здесь

person rounak    schedule 23.03.2015

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

person Andy Milburn    schedule 30.05.2011

Смена «локации» на симуляторе у меня сработала.

Отладка> Местоположение> (Например, у меня не было отмечено ни одного пункта вместо City Bicycle Ride)

person Raphael Onofre    schedule 07.11.2014

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

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

person Adam Johns    schedule 10.04.2015

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

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

person Rodrigo Gonzalez    schedule 18.03.2014

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

person Joe Maher    schedule 30.03.2015
comment
Здесь я тоже потратил 2 часа, установил широту и долготу в правильные позиции. - person Arpit B Parekh; 02.07.2015

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

1. В Xcode, Продукт -> Схема -> Изменить схему, затем отмените «Разрешить имитатор местоположения».

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

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

4. В iOS Simulator и сбросить. Тогда все заработает.

person HsuChihYung    schedule 03.07.2015

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

person Pandurang Yachwad    schedule 11.01.2015

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

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

person Arpit B Parekh    schedule 02.07.2015

Для вернувшихся разработчиков :) Просто выберите «Debug->Location->Freeway Drive» в меню «Симулятор». Если проблема не исчезла, попробуйте после выполнения «Симулятор-> Сбросить содержимое и настройки» из меню симулятора. Однажды это помогло мне с той же проблемой. Некоторое время симулятор установлен на "Custom location", из-за чего он ничего не обнаруживает.

person SaffronState    schedule 05.12.2015

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

введите описание изображения здесь

person Tal Zion    schedule 22.09.2019

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

person Subho    schedule 10.01.2017

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

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

person Pratheesh B    schedule 17.12.2017

при добавлении разрешения Privacy - Location When In Use Usage Description в info.plist это было решено для меня

person miguelzolk    schedule 06.06.2019