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
местоположение во время работы приложения.
Если вы получаете это на устройстве, скорее всего, вы не просили или пользователь отказал в разрешении на сбор данных о местоположении.