web-dev-qa-db-ja.com

didFailWithError:Error Domain = kCLErrorDomain Code = 0 "操作を完了できませんでした。(kCLErrorDomainエラー0.)"

現在の場所を取得したいのですが、代わりにエラーが発生します。

これは私のView Controllerのスニペットです。

- (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.)" 
76
Luca
  1. 実際に有効なWiFiおよび3G接続があることを確認してください

    ...その場合:

  2. 設定に移動して位置情報サービスをリセットします

  3. ネットワーク設定をリセットする

これはその問題の世話をする必要があります。これはデバイス/ネットワーク関連であり、アプリ関連ではありません。特に、アプリが位置情報サービスに依存しており、デバイスがWiFiのみで、人々がAppStoreで否定的な評価を与えている場合、それは迷惑です...ご容赦ください。

104
MeM

シミュレーターを使用している場合:

  1. 押す command + shift + , Xcodeでスキームエディターを開く
  2. 実行スキームを選択します
  3. [オプション]タブに移動します
  4. Allow Location Simulation
  5. ドロップダウンでデフォルトの場所を選択します

Noneをデフォルトの場所として選択すると、問題が発生した可能性があります。

130
silentBeep

このエラーを無視して、更新または別のエラーが発生するのを待ちます。

ロケーションマネージャのドキュメントには、このエラーは一時的なものであると書かれています。すぐに場所を取得できなかったことを知らせますが、試行は続けます。 「このような状況では、エラーを無視して新しいイベントを待つことができます。」これは、locationManager:didFailWithError:という名前のメソッドを使用する本当に骨の折れる方法です-Appleに感謝します!

Apple Documentation

21
Ray Lillywhite

シミュレーターを再起動してみてください(使用しているものと仮定)。

他のすべてを試した後、これは私のために働いた。

18
Ian

シミュレータの再起動はうまくいきませんでした。

"iOS Simulator" >> "Reset Content and Settings...経由ですべてをクリアする必要がありました。

14

シミュレータでこのエラーが発生していました。デバッグパネルの場所ボタンをクリックして場所を設定すると、問題が修正されました。 (ボタンが青色であることを確認してください)

enter image description here

9
rounak

私は同じ問題を抱えています。考えられる説明/修正はカバーされていると思います このSO post で。

7
Andy Milburn

シミュレーターの「場所」を変更することは私のために働いた。

デバッグ>場所>(Cine Bicycle Rideなどではなく、Mineがチェックされていません)

5
Raphael Onofre
  1. シミュレーターで、[設定]> [全般]> [リセット]> [場所とプライバシーのリセット]に移動します。

  2. シミュレーターを終了し、アプリを再度実行します

5
Adam Johns

シミュレータを使用していると仮定すると、Debug -> Locationおよび場所を設定します。

何も選択していない場合、このエラーが発生します。

3

custom locationを使用している場合は、長くて正しい方法を使用していることを確認してください。

2
Joe Maher

私は以前に問題を見てきましたが、それを解決する方法がありますが、それは1回しか機能しません。プロジェクトをもう一度実行したい場合は、毎回解決策を繰り返す必要があります.

1.Xcode、製品->スキーム->スキームの編集で、「ロケーションシミュレーターを許可」をキャンセルします。

2. iOSシミュレーターに移動し、コンテンツと設定をリセットします。

3.Xcodeに戻り、最初のステップを繰り返します。

4. iOSシミュレーターにリセットします。その後、動作します。

2
HsuChihYung

このような問題は、場所を「Apple」に設定することで解決できます。少なくともテスト目的には機能します。

1

返された開発者の場合:) [シミュレータ]メニューから[Debug->Location->Freeway Drive]を選択するだけです。それでも問題が解決しない場合は、シミュレータメニューから[シミュレータ->コンテンツと設定のリセット]を実行してみてください。これは同じ問題で一度助けになりました。一部のタイムシミュレータの場所は「Custom location」に設定されているため、何も検出されません。

1
SaffronState
  1. 内容と設定をリセットしました。
  2. 派生データからデータを削除しました。
  3. Xcode、およびシミュレータを再起動し、私のために働いた。

@Memと他の多くの人の回答から

1
Arpit B Parekh

シミュレーターで家に帰る

ホーム->設定->プライバシー->場所->アプリを選択し、常に選択する

0
Pratheesh B

デバイスで試してください。シミュレーターが現在地を取得できない場合があります。

0
Subho

プライバシーを追加するとき-使用中の場所info.plistの使用方法の説明それは私のために解決されました

0
miguelamgo