2017-08-17 19 views
0

iOSアプリをXcodeからiOSシミュレータまたは物理デバイスに実行すると、アプリが数秒でクラッシュします。その後、アプリがバックグラウンドに入り、iPhoneのホーム画面に戻ってくると、自分の場所を使用する許可を求めるアラートビューがポップアップしますが、答えを選択する前にすばやく消えます。 CLLocationManagerは「locationManager」と呼ばれる宣言して初期化した後、私はエラーがこれらのステートメントからトリガーされると信じている起動画面でiOSアプリがクラッシュし、アプリクラッシュ後に場所が要求される(Xcode 8.3.3)

locationManager.requestWhenInUseAuthorization() 
    locationManager.requestLocation() 

コンソールログに表示される主なエラーは次のとおりです。

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Delegate must respond to locationManager:didFailWithError:' 

私は "NSLocationWhenInUseUsageDescription"を使って自分の使用説明を設定しました。そのため、私のアプリは自分の場所をどのように使用するのかをユーザに提示することができます。このエラーにつながる可能性がある他に何かがありますか?

ユーザーの所在地を取得するには、Info.plistファイルに「NSLocationWhenInUseUsageDescription」キーを追加するだけで必要なのですか、それとももっと対策が必要なのでしょうか?

のようなクラスを作成し、以下のようにメソッドオーバーライドします:あなたの問題を解決するために

+0

を私は誰かがあなたに – GIJOW

+0

任意のデバッグログを助けることができる疑いますか? – kerry

+0

@kerryデバッグログのメインエラーを投稿に追加しました:) – tennis25

答えて

0

あなたが好きな場所

class LocationDelegate : NSObject, CLLocationManagerDelegate { 
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     // here you will receive your location updates on `locations` parameter 

    } 

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { 
     // if something goes wrong comes to here 
    } 

    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { 
     // here you can monitor the authorization status changes 
    } 

} 

は、このクラスのグローバルインスタンスを作成します。

let locationDelegate: LocationDelegate = LocationDelegate() 

デリゲート設定許可を求める前に、次に:コードのこの部分では

locationManager.delegate = locationDelegate 
+0

大変ありがとうございます! – tennis25

関連する問題