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
- Вкладка "Варіант"
- Вже встановлено прапорець Основне розташування> виберіть своє місцезнаходження
- Натисніть OK
Крім того, навіть якщо ви не підключені до Wi-Fi, ви можете встановити місце в тренажері за допомогою пунктів верхнього меню Debug>Location
та зробити його постійним, виконавши наведені вище дії.
У мене просто була ця проблема. Мені знадобився час, щоб знайти рішення, яке лише слабо пов’язане з відповіддю попереднього автора.
Аеропорт (WiFi) повинен бути увімкнений, щоб CoreLocation працював у iPhone / iPad Simulator. Я був підключений через Ethernet, тому CL не робив нічого в Simulator. Увімкніть аеропорт у налаштуваннях мережі та повторіть спробу. Ви можете змінити порядок мережевих інтерфейсів, перетягнувши аеропорт під 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.
Отже, це означає, що місцезнаходження визначити не вдалося.
Я думаю, найбільш вірогідною причиною є те, що менеджер місцезнаходжень використовує WiFi для триангуляції місцезнаходження, а база даних не охоплює локальні мережі. Це, мабуть, може виправити користувач, якщо він піде сюди .
Однак, як я вже зазначав, я також іноді сприймав це як перехідну помилку під час запуску програми, заснованої на розташуванні, у місці, де зазвичай працюють дані про розташування WiFi.
Нарешті, я думаю, можна побачити цю помилку, якщо є якась апаратна несправність.
1) перевірте, чи дійсно у вас є дійсне з'єднання Wi-Fi та 3G
якщо ви це зробите тоді
2) перейдіть до налаштувань та скиньте служби локації 3) скиньте налаштування мережі
Ця помилка виникає, коли менеджер місцезнаходжень не може негайно отримати інформацію про місцезнаходження. Я виявив, що ця помилка сталася під час виклику методу startUpdatingLocation. Для мене це відбувалося на iPod, але не на iPhone. Це має сенс, оскільки iPhone має більше способів (наприклад, стільникова мережа) отримувати інформацію про місцезнаходження та може швидко оцінити місцезнаходження, тоді як iPod займає більше часу, що спричинило появу цієї помилки на iPod.
Оскільки, коли ця помилка викидається, викликається метод locationManager: didFailWithError: delegate, можна обробити цей конкретний випадок в умовному операторі, зіставляючи "[домен помилки]" та "[код помилки]" з об'єкта помилки, переданого цьому методу.
Точною причиною, яку я виявив, є конфлікт, що виникає при моделюванні розташування як в симуляторі ios “Налаштування налагодження”, так і в налаштуваннях xcode “Редагування схем”. Переконайтеся, що ви встановили місцезнаходження користувача за замовчуванням у будь-якому з них і позначте інший до None вирішив проблему, сподіваючись, що це може допомогти точно. InXcode:
У симуляторі iphone / ipad:
Ви можете додати свій власний список місцеположень до Xcode, щоб тестувати свої програми.
У Xcode виберіть меню Налагодження / імітація розташування, і вам буде запропоновано:
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
місце, поки працює програма.
Якщо ви отримуєте це на пристрої, швидше за все, ви не просили про це або користувач відмовив у дозволі зібрати місцезнаходження.