Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Warum tritt dieser Fehler auf?
Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Warum tritt dieser Fehler auf?
Antworten:
Dieser Fehler tritt auf, wenn Sie Scheme/Edit Scheme/Options/Allow Location Simulation
überprüft haben , aber keinen Standardspeicherort festgelegt haben. Ich bin mir sicher, dass es auch andere Ursachen gibt.
AKTUALISIEREN
DANKE AN Ben Marten Mit den folgenden Schritten in XCode können Sie es dauerhaft machen:
- Produkt> Schema> Schema bearbeiten
- Klicken Sie auf .app ausführen
- Registerkarte Option
- Bereits aktiviert Kernstandort> Wählen Sie Ihren Standort aus
- drücke OK
Außerdem können Sie, selbst wenn Sie nicht mit WLAN verbunden sind, einen Ort im Simulator über die oberen Menüpunkte festlegen Debug>Location
und ihn dauerhaft ausführen, indem Sie die obigen Schritte ausführen
Ich hatte gerade dieses Problem. Ich habe eine Weile gebraucht, um die Lösung zu finden, die nur lose mit der Antwort des vorherigen Posters zusammenhängt.
Der Flughafen (WiFi) muss aktiviert sein, damit CoreLocation im iPhone / iPad-Simulator funktioniert. Ich war über Ethernet verbunden, sodass CL im Simulator nichts unternahm. Aktivieren Sie in Ihren Netzwerkeinstellungen den Flughafen und versuchen Sie es erneut. Sie können die Reihenfolge Ihrer Netzwerkschnittstellen ändern, indem Sie Airport unter Ethernet ziehen, wenn Sie weiterhin Ihre Kabelverbindung gegenüber Ihrer ...
Aus den API-Dokumenten:
CLError
Vom Standortmanagerobjekt zurückgegebene Fehlercodes.
typedef enum {kCLErrorLocationUnknown = 0, kCLErrorDenied, kCLErrorNetwork, kCLErrorHeadingFailure} CLError;
Konstanten
kCLErrorLocationUnknown Der Standortmanager konnte derzeit keinen Standortwert abrufen. Verfügbar in iPhone OS 2.0 und höher. In CLError.h deklariert.
kCLErrorDenied Der Zugriff auf den Standortdienst wurde vom Benutzer verweigert. Verfügbar in iPhone OS 2.0 und höher. In CLError.h deklariert.
kCLErrorNetwork Das Netzwerk war nicht verfügbar oder ein Netzwerkfehler ist aufgetreten. Verfügbar in iPhone OS 3.0b und höher. In CLError.h deklariert.
kCLErrorHeadingFailure Die Überschrift konnte nicht ermittelt werden. Verfügbar in iPhone OS 3.0 und höher. In CLError.h deklariert.
Dies bedeutet, dass der Standort nicht bestimmt werden konnte.
Ich würde vermuten, dass die wahrscheinlichste Ursache darin besteht, dass der Standortmanager WLAN verwendet, um den Standort zu triangulieren, und die Datenbank die lokalen Netzwerke nicht abdeckt. Das kann der Benutzer anscheinend beheben, wenn er hierher kommt .
Wie ich jedoch bemerkt habe, habe ich dies gelegentlich auch als vorübergehenden Fehler gesehen, wenn ein standortbasiertes Programm an einem Ort ausgeführt wird, an dem das WiFi-Standortmaterial normalerweise funktioniert.
Schließlich denke ich, dass es möglich ist, diesen Fehler zu sehen, wenn es einen Hardwarefehler gibt.
1) Überprüfen Sie, ob Sie tatsächlich eine gültige WLAN- und 3G-Verbindung haben
wenn du es dann tust
2) Gehen Sie zu Einstellungen und setzen Sie Ihre Standortdienste zurück. 3) Setzen Sie Ihre Netzwerkeinstellungen zurück
Dieser Fehler wird ausgelöst, wenn der Standortmanager Standortinformationen nicht sofort abrufen kann. Ich habe festgestellt, dass dieser Fehler beim Aufruf der Methode startUpdatingLocation auftrat. Für mich geschah dies auf dem iPod, aber nicht auf dem iPhone. Dies ist sinnvoll, da das iPhone über mehr Möglichkeiten (wie ein Mobilfunknetz) verfügt, um Standortinformationen abzurufen, und eine schnelle Schätzung des Standorts erhalten kann, während der iPod mehr Zeit benötigt, wodurch dieser Fehler auf dem iPod ausgelöst wurde.
Da beim Auslösen dieses Fehlers die Methode locationManager: didFailWithError: delegate aufgerufen wird, kann dieser spezielle Fall in einer bedingten Anweisung behandelt werden, indem "[Fehlerdomäne]" und "[Fehlercode]" aus dem an diese Methode übergebenen Fehlerobjekt abgeglichen werden.
Der genaue Grund, den ich gefunden habe, ist, dass in der Standortsimulation sowohl im iOS-Simulator "Debug-Einstellungen" als auch in den Xcode-Einstellungen "Schemata bearbeiten" ein Konflikt auftritt. Stellen Sie sicher, dass Sie den Standard-Benutzerstandort in einem dieser Bereiche festlegen und markieren der andere zu keiner löste das Problem hoffentlich dies könnte sicher helfen. InXcode:
Im iPhone / iPad-Simulator:
Sie können Xcode eine eigene Liste von Speicherorten hinzufügen, mit denen Sie Ihre Anwendungen testen können.
Wählen Sie in Xcode das Menü Debug / Simulate Location und Sie erhalten Folgendes:
a. "Don't Simulate Location"
b. 12 example locations
c. "Add GPX File to Project..."
Wählen Sie "GPX-Datei zum Projekt hinzufügen ..." und wählen Sie die von Ihnen erstellte GPX-Datei aus.
Dank dieses Artikels ( https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/ ) erhielt ich einen Hinweis zum Anzeigen der Daten in meiner benutzerdefinierten GPX-Datei und fand dort das Problem.
Einige GPX-Dateien, die Sie möglicherweise aus verschiedenen Quellen erhalten, enthalten möglicherweise die folgenden Elemente, die die unterschiedlichen Koordinaten im angegebenen Pfad angeben. Dies funktioniert nicht mit der Standortsimulation von Xcode.
<gpx>
...
<trkpt lat="" lon="">
<ele></ele>
</trkpt>
...
</gpx>
Was Sie tun sollten, ist, alle Vorkommen des Elements "trkpt" zu finden und es in Ihrem bevorzugten Text- / XML-Editor durch "wpt" zu ersetzen. Das Endergebnis sollte wie folgt aussehen:
<gpx>
<wpt lat="" lon="">
<ele></ele>
</wpt>
...
</gpx>
Hoffe das hilft! Es hat mir sicherlich geholfen.
Dieser Fehler tritt auf, während Sie Ihr Programm ausführen, aber Sie simulieren den Speicherort, nachdem Sie das Programm ausgeführt haben.
Ich erhalte eine Methode: Beenden Sie Ihren Simulator und starten Sie ihn neu. Legen Sie dann Ihren Simulator-Speicherort fest, bevor Sie das Programm ausführen, und es funktioniert für mich.
Hoffe das hilft! Es hat mir sicherlich geholfen. Vielen Dank...
All dies hat bei mir nicht funktioniert. Was bei mir funktioniert hat, ist: - Stellen Sie den Speicherort im Simulator ein, none
um ihn dann wieder in den custom
Speicherort zu ändern, während die App ausgeführt wird.
Wenn Sie dies auf dem Gerät erhalten, haben Sie wahrscheinlich nicht danach gefragt oder der Benutzer hat die Berechtigung zum Sammeln des Speicherorts verweigert.