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
は、デフォルトの場所をチェックしたが設定していない場合に発生します。他の原因もあると思います。
更新
THANKS TO ベン・マーテン あなたはXcodeでこれらの手順を使用して、それは永続的なものにすることができます。
- 製品>スキーム>スキームの編集
- Run .appをクリックします。
- オプションタブ
- すでにチェックされているコアの場所>場所を選択
- OKを押します
その上、Wi-Fiに接続していない場合でも、トップメニューアイテムDebug>Location
を使用してシミュレーターで場所を設定し、上記の手順を永続的に行うことができます
私はこの問題を抱えていました。解決策を見つけるのにしばらく時間を要しましたが、それは前の投稿者の回答と大まかに関連しています。
iPhone / iPadシミュレーターのCoreLocationが機能するには、空港(WiFi)がオンになっている必要があります。私はイーサネット経由で接続されたので、CLはシミュレータで何もしませんでした。ネットワーク設定で空港をオンにして、もう一度お試しください。ワイヤレスよりも有線接続を優先したい場合は、Ethernetの下にAirportをドラッグして、ネットワークインターフェイスの順序を変更できます...
APIドキュメントから:
CLError
ロケーションマネージャオブジェクトによって返されるエラーコード。
typedef enum {kCLErrorLocationUnknown = 0、kCLErrorDenied、kCLErrorNetwork、kCLErrorHeadingFailure} CLError;
定数
kCLErrorLocationUnknownロケーションマネージャーは現在ロケーション値を取得できませんでした。iPhoneOS 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)実際に有効なWiFiおよび3G接続があることを確認します
もしそうなら
2)設定に移動して位置情報サービスをリセットします3)ネットワーク設定をリセットします
このエラーは、Location Managerが位置情報をすぐに取得できない場合にスローされます。このエラーは、startUpdatingLocationメソッドが呼び出されたときに発生していたことがわかりました。私にとって、これはiPodで起こっていましたが、iPhoneでは起こりませんでした。iPhoneには位置情報を取得するためのより多くの方法(携帯電話ネットワークなど)があり、位置をすばやく見積もることができるのに対し、iPodでは時間がかかるためiPodでこのエラーが発生するので、それは理にかなっています。
このエラーがスローされると、locationManager:didFailWithError:delegateメソッドが呼び出されるため、このメソッドに渡されたエラーオブジェクトからの「[エラードメイン]」と「[エラーコード]」を照合することにより、条件付きステートメントでこの特定のケースを処理できます。
私が見つけた正確な理由は、iOSシミュレータの「デバッグ設定」とxcode設定の「スキームの編集」の両方でロケーションシミュレーションで競合が発生していることです。このいずれかにデフォルトのユーザーロケーションを設定し、他なしでは確かに、このかもしれないのヘルプを願って問題を解決しました。 InXcode:
iPhone / iPadシミュレーター:
この記事のおかげで(https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/)ので、カスタムGPXファイルのデータを確認するヒントが得られ、問題が見つかりました。
さまざまなソースから取得した一部のGPXファイルには、指定したパスのさまざまな座標を示す次の要素が含まれている場合があります。これはXcodeのロケーションシミュレーションでは機能しません。
<gpx>
...
<trkpt lat="" lon="">
<ele></ele>
</trkpt>
...
</gpx>
あなたがしなければならないことは、「trkpt」要素のすべての出現を見つけ、お気に入りのテキスト/ xmlエディターでそれを「wpt」に置き換えることです。最終結果は次のようになります。
<gpx>
<wpt lat="" lon="">
<ele></ele>
</wpt>
...
</gpx>
お役に立てれば!それは確かに私を助けました。
これはすべて私にとってはうまくいきませんでした。私にとってうまくいったのは:-シミュレータから場所を設定し、アプリの実行中none
にcustom
場所を変更します。
デバイスでこれを取得している場合は、要求していないか、ユーザーが場所を収集する許可を拒否している可能性があります。