Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Почему возникает эта ошибка?
Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Почему возникает эта ошибка?
Ответы:
Эта ошибка возникает, если вы Scheme/Edit Scheme/Options/Allow Location Simulationпроверили, но не установили местоположение по умолчанию. Я уверен, что есть и другие причины.
ОБНОВИТЬ
СПАСИБО Бену Мартену. Вы можете сделать его постоянным, выполнив следующие действия в XCode:
- Продукт> Схема> Изменить схему
- Щелкните Выполнить .app
- Вкладка Option
- Уже проверил Core Location> выберите свое местоположение
- Нажмите ОК
Кроме того, даже если вы не подключены к Wi-Fi, вы можете установить местоположение в симуляторе через пункты верхнего меню Debug>Locationи сделать его постоянным, следуя инструкциям выше.

Просто у меня была эта проблема. Мне потребовалось время, чтобы найти решение, которое лишь слабо связано с ответом предыдущего автора.
Для работы CoreLocation в симуляторе iPhone / iPad должен быть включен аэропорт (WiFi) . Я был подключен через Ethernet, поэтому CL ничего не делал в симуляторе. Включите аэропорт в настройках сети и повторите попытку. Вы можете изменить порядок сетевых интерфейсов, перетащив Airport под Ethernet, если вы хотите и дальше использовать проводное соединение, а не беспроводное ...
Из документации API:
CLError
Коды ошибок, возвращаемые объектом диспетчера местоположения.
typedef enum {kCLErrorLocationUnknown = 0, kCLErrorDenied, kCLErrorNetwork, kCLErrorHeadingFailure} CLError;
Константы
kCLErrorLocationUnknown Диспетчеру местоположения не удалось получить значение местоположения прямо сейчас. Доступно в iPhone OS 2.0 и более поздних версиях. Заявлено в CLError.h.
kCLErrorDenied Доступ к службе определения местоположения был запрещен пользователем. Доступно в iPhone OS 2.0 и новее. Заявлено в CLError.h.
kCLErrorNetwork Сеть была недоступна или произошла сетевая ошибка. Доступно в iPhone OS 3.0b и новее. Заявлено в CLError.h.
kCLErrorHeadingFailure Не удалось определить заголовок. Доступно в iPhone OS 3.0 и новее. Заявлено в CLError.h.
Это означает, что местоположение не может быть определено.
Я предполагаю, что наиболее вероятная причина в том, что менеджер местоположения использует Wi-Fi для триангуляции местоположения, а база данных не охватывает локальные сети. Это, по-видимому, может быть исправлено пользователем, если он перейдет сюда .
Однако, как я уже отмечал, я также иногда видел это как временную ошибку при запуске программы, основанной на местоположении, в месте, где обычно работают данные о местоположении WiFi.
Наконец, я предполагаю, что эту ошибку можно увидеть, если есть какой-то аппаратный сбой.
1) убедитесь, что у вас действительно есть действующее соединение WiFi и 3G
если ты это сделаешь, то
2) перейдите в настройки и сбросьте службы определения местоположения 3) сбросьте настройки сети
Эта ошибка возникает, когда диспетчер местоположения не может немедленно получить информацию о местоположении. Я обнаружил, что эта ошибка возникает при вызове метода startUpdatingLocation. Для меня это происходило на iPod, но не на iPhone. Это имеет смысл, поскольку у iPhone есть больше способов (например, сотовая сеть) для получения информации о местоположении и он может получить быструю оценку местоположения, тогда как iPod требует больше времени, что привело к появлению этой ошибки на iPod.
Поскольку при возникновении этой ошибки вызывается метод locationManager: didFailWithError: делегат, можно обработать этот конкретный случай в условном операторе, сопоставив «[домен ошибки]» и «[код ошибки]» из объекта ошибки, переданного этому методу.
Точная причина того, что я обнаружил, заключается в том, что существует конфликт при моделировании местоположения как в симуляторе ios «Настройки отладки», так и в настройках xcode «Редактировать схемы». Убедитесь, что вы установили местоположение пользователя по умолчанию в любом из них и отметьте другой к None решил проблему, надеюсь, это наверняка поможет.
InXcode:
В симуляторе iphone / ipad:
Вы можете добавить свой собственный список местоположений в Xcode для тестирования ваших приложений.
В Xcode выберите меню Debug / Simulate Location, и вам будет предложено:
a. "Don't Simulate Location"
b. 12 example locations
c. "Add GPX File to Project..."
Выберите «Добавить файл GPX в проект ...» и выберите созданный файл GPX.
Благодаря этой статье ( https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/ ) мне посоветовали взглянуть на данные в моем пользовательском файле GPX, и там была обнаружена проблема.
Некоторые файлы GPX, которые вы можете получить из разных источников, могут иметь следующие элементы, указывающие разные координаты в указанном пути. Это не будет работать с имитацией местоположения Xcode.
<gpx>
...
<trkpt lat="" lon="">
<ele></ele>
</trkpt>
...
</gpx>
Что вам нужно сделать, так это найти все вхождения элемента «trkpt» и заменить его на «wpt» в вашем любимом текстовом / xml-редакторе. Конечный результат должен быть примерно таким:
<gpx>
<wpt lat="" lon="">
<ele></ele>
</wpt>
...
</gpx>
Надеюсь это поможет! Это, безусловно, помогло мне.
Эта ошибка возникает при запуске вашей программы, но вы имитируете местоположение после запуска программы.
У меня есть метод: выйдите из симулятора и перезапустите его, затем установите местоположение симулятора перед запуском программы, и он работает для меня.
Надеюсь это поможет! Это, безусловно, помогло мне. Спасибо...
все это не сработало для меня ... что сработало для меня: - установить местоположение из симулятора, чтобы noneзатем изменить его обратно на customместоположение во время работы приложения.
Если вы получаете это на устройстве, скорее всего, вы не просили или пользователь отказал в разрешении на сбор данных о местоположении.