2016-11-04 13 views
0

次のコードで例外が発生しましたが、理由はわかりません。 XCodeで例外がヒットしたら、例外の内容を調べることはできません。通常はXCodeで実行を続行でき、例外の理由は何かを調べるために呼び出しスタックを調べることができます。この場合、プログラム実行の続行ボタンをクリックすると、スクリーンショットの特定の行に継続して表示されます。アドレスをジオコードする際に例外が発生する

let geoCoder = CLGeocoder() 
geoCoder.geocodeAddressString("Infinite Loop,Cupertino,California", completionHandler: {(placemarks: [CLPlacemark]?, error: NSError?) -> Void in 
    print("WTF") 
} as! CLGeocodeCompletionHandler) 

enter image description here

プロジェクトはMapKitフレームワークにリンクされています。

+0

は時間のカップルのための "継続" 押してみてください。その後、ブレークポイントを緩めることができます(これはどこにあるのか分かりません)が、どのタイプの例外がログに記録されているかを見る機会があります。 それからそこから行くか、スタックトレースなどを質問に追加してください。 –

+0

私は何度も何度もクリックしてみましたが、その行を超えて移動しないので、有用なスタックトレースを取得できません。 – Gruntcakes

+0

"すべての例外にブレーク"を設定するとどうなるか見る –

答えて

0

構文が間違っています。何も強制的にキャストしようとしてはいけません。スウィフト3と仮定すると、あなたが必要とする:

let geoCoder = CLGeocoder() 
geoCoder.geocodeAddressString("Infinite Loop,Cupertino,California", completionHandler: { (placemark: [CLPlacemark]?, error: Error?) -> Void in 
    // do stuff 
}) 

またはそれ以上単に:

let geoCoder = CLGeocoder() 
geoCoder.geocodeAddressString("Infinite Loop,Cupertino,California") { (placemark: [CLPlacemark]?, error: Error?) -> Void in 
    // do stuff 
} 
+0

これはSwiftが常に進化している問題です。チュートリアルのコードをコピー/ペーストしたとき、XCode自体に「as!CLGeocodeCompletionHandler」が追加されました.XCodeはNSError今度はエラー – Gruntcakes

+0

Swift 3の場合は「Error」を使用しています。Swift 2の場合は「NSError」を使用してください。 – rmaddy

+0

はい、ありがとうございます。しかし、コードをコピーして貼り付けるときにそのようなことを逃すのは簡単で、XCode自体が気付いたはずです。 – Gruntcakes

関連する問題