didFailWithError: Помилка Domain = kCLErrorDomain Code = 0 “Операцію не вдалося виконати. (помилка kCLErrorDomain 0.) "


82

Я хочу отримати поточне місцезнаходження, але замість цього з’являється повідомлення про помилку.

Це фрагмент мого контролера перегляду.

- (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.)" 

Ви можете використовувати google api як альтернативу. Зверніться до моєї відповіді тут stackoverflow.com/a/40670608/2033377
Діпак Тхакур

Відповіді:


106
  1. Перевірте, чи дійсно у вас є дійсне з'єднання Wi-Fi та 3G

    ... якщо ви це зробите, тоді:

  2. Перейдіть до налаштувань і скиньте служби локації

  3. Скиньте налаштування мережі

Це має подбати про це питання. Це пов’язано з пристроєм / мережею, а не з додатками. Це дратує, особливо якщо ваш додаток залежить від служб визначення місцезнаходження, а пристрій має лише Wi-Fi, а люди дають негативні оцінки на AppStore ... Пробачте, я там трохи емоційний.


2
Наскільки я знаю, GPS не потребує з’єднання з Інтернетом чи Wi-Fi. Це просто приймач, якщо він знаходиться у доступному місці з 2 або 3 супутниками GPS, ми можемо отримати координати географічного розташування. Тоді чому помилка виникає, якщо є немає підключення до Інтернету чи Wi-Fi?
Дурай Амутан. H

2
Один голос за вказівку скинути послуги локації та налаштування мережі
Дурай Амутан. H

3
Вам не потрібно проходити ці дії. Просто ігноруйте цю помилку та чекайте нових оновлень. Дивіться мою відповідь нижче або перегляньте документи на developer.apple.com/library/ios/documentation/corelocation/… :
Ray Lillywhite

3
У мене була точно така ж проблема під час гри з MapKit & CoreLocation на моєму пристрої (iPhone 5S, iOS 8.1.3). Мені не вдалося знайти місцезнаходження, і я знову і знову отримав ту саму помилку (незважаючи на хороший сигнал мобільної мережі). Поки я не ввімкнув WiFi, і все було виправлено! Дивно ... Дякую!
Вінцц

2
@ DuraiAmuthan.H iPad не має власного обладнання GPS. Вони використовують базу даних MAC-адрес wifi, щоб визначити ваше місцезнаходження.
whoKnows

146

Якщо ви використовуєте симулятор:

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

Вибір проблеми Noneяк місцезнаходження за замовчуванням міг спричинити проблему.


4
Оце Так! Дякую, я переслідував це тижнями. Мій додаток продовжував примушувати iPad чи iPhone до Лондона, Англія, і я не міг зрозуміти, чому. Я вимкнув цю опцію, і проблема зникла. Можливо, вона мала хикавку, захоплюючи місце, а потім вимикаючись і змінюючи місце на те, що на схемі.
Andrew Smith

7
Працював у мене, але мені теж доводилося робити iOS Simulator>Reset Content and Settings...
bendytree

Прибив це для мене.
ScottyBlades

23

Просто проігноруйте цю помилку і зачекайте більше оновлень або іншої помилки.

У документації для менеджера місцезнаходжень зазначено, що ця помилка тимчасова. Це повідомляє вам, що не вдалося негайно отримати місце, але він продовжує намагатися. "У такій ситуації ви можете просто ігнорувати помилку і чекати нової події". Що є дійсно нерозумним способом використання методу під назвою locationManager:didFailWithError:- Дякую, Apple!

Apple Documentation


19

Спробуйте перезапустити симулятор (припускаючи, що саме цим ви користуєтесь).

Спробувавши все інше, це спрацювало для мене.


Попрацював у мене. Дякую
Sushil Sharma

Працював і у мене. Дякую
cozmin-calin

14

Перезапуск тренажера для мене не спрацював.

Мені довелося все очистити "iOS Simulator" >> "Reset Content and Settings....


9

Я отримував цю помилку на тренажері. Натискання кнопки розташування на панелі налагодження та встановлення місцезнаходження вирішило проблему для мене. (Переконайтеся, що кнопка синя)

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



5

Зміна "Розташування" на тренажері у мене спрацювала.

Налагодження> Розташування> (Міну перевірено Немає замість міської їзди на велосипеді, наприклад)


5
  1. У тренажері перейдіть до Налаштування> Загальні> Скинути> Скинути місцезнаходження та конфіденційність

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


3

Припускаючи, що ви використовуєте тренажер, ви можете Debug -> Locationвибрати та встановити місце розташування.

Якщо ви не вибрали жодного, у вас буде ця помилка.


2

Якщо ви використовуєте custom locationпереконайтеся, що у вас довгий і лат правильний шлях, я повернув його назад і змарнував за 3 години до того, як зрозумів ...


Ame тут я також витратив 2 години, встановив широту та довготу в правильні позиції.
Arpit B Parekh

2

Я бачив проблему раніше, є спосіб її вирішення, але вона може працювати лише один раз. Якщо ви хочете запустити проект знову, і вам потрібно повторити рішення щоразу.

1. У Xcode, Продукт -> Схема -> Змінити схему, а потім скасуйте "Дозволити симулятор розташування".

2. До iOS Simulator та скиньте вміст та налаштування.

3. Знову до Xcode, повторіть перший крок.

4. до iOS Simulator і скидання. Тоді це спрацює.


1

Такі проблеми можна вирішити, встановивши місце розташування як " Apple". Принаймні, це працює з метою тестування.


1
  1. Я відновив вміст і налаштування.
  2. Видалено дані з похідних даних.
  3. Перезапустив Xcode та Simulator і працював у мене.

з відповіді @Mem та багатьох інших спасибі


1

Для повернених розробників :) Просто виберіть " Debug->Location->Freeway Drive" в меню "Симулятор". Якщо проблема все ще виникає, спробуйте виконати "Симулятор-> Скинути вміст та налаштування" у меню симулятора. Це мені одного разу допомогло з тим самим питанням. Деякий час розташування симулятора встановлено на " Custom location", через що він нічого не виявляє.


1

Якщо ви використовуєте симулятор, переконайтеся, що схема дозволяє розташування, і ви вибрали місце за замовчуванням.

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


0

Спробуйте на пристрої. Іноді симулятор не може визначити ваше місцезнаходження.


0

Поверніться додому в тренажері

додому -> Налаштування -> Конфіденційність -> Місцеположення -> виберіть програму та виберіть завжди


0

при додаванні дозволу Конфіденційність - Розташування При використанні Опис використання у списку info.plist це для мене вирішено

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.